Russian Qt Forum

Qt => Вопросы новичков => Тема начата: Edynchik от Июнь 18, 2013, 14:11



Название: Сигнал в дочернем классе
Отправлено: Edynchik от Июнь 18, 2013, 14:11
Добрый день. Создал дочерний класс от QMainwindow(который рисует форму), в нем написал макрос Q_OBJECT, но слоты не реагируют на сигналы.В чем может быть дело?Спасибо


Название: Re: Сигнал в дочернем классе
Отправлено: demaker от Июнь 18, 2013, 14:13
Код, можно посмотреть


Название: Re: Сигнал в дочернем классе
Отправлено: mutineer от Июнь 18, 2013, 14:24
Дело в неправильном коде


Название: Re: Сигнал в дочернем классе
Отправлено: Edynchik от Июнь 18, 2013, 14:24
вот проект...


Название: Re: Сигнал в дочернем классе
Отправлено: mutineer от Июнь 18, 2013, 14:30
и что не работает?


Название: Re: Сигнал в дочернем классе
Отправлено: Edynchik от Июнь 18, 2013, 14:31
Слот таймера,кнопок...


Название: Re: Сигнал в дочернем классе
Отправлено: mutineer от Июнь 18, 2013, 14:32
Я вижу только одного наследника QMainWindow и у него нету слота для таймера. Скажи человеческим языком что у тебя не вызывается


Название: Re: Сигнал в дочернем классе
Отправлено: Edynchik от Июнь 18, 2013, 14:35
ну я нажиаю кнопку, по ней отрисовывается график,спинбокс,лсд, и две кнопки...совственно слот таймера не работает, слоты кнопок тоже...


Название: Re: Сигнал в дочернем классе
Отправлено: mutineer от Июнь 18, 2013, 14:37
Код:
    void timeoutFifo();
    void cyrcle_Buffer(QByteArray ba,int pos);
    void startFifo();
    void stopFifo();
    void draw();
    bool valueChange(int cnt);

Эти слоты? они не работают потому что объект уже уничтожен


Название: Re: Сигнал в дочернем классе
Отправлено: Edynchik от Июнь 18, 2013, 14:41
Ох ты...когда то я с этим сталкивался, выходя из функции кноки на главной форме объект уничтожается...


Название: Re: Сигнал в дочернем классе
Отправлено: mutineer от Июнь 18, 2013, 14:45
Это называется "время жизни объектов в С++"


Название: Re: Сигнал в дочернем классе
Отправлено: demaker от Июнь 18, 2013, 14:49
Код:

void MainWindow::on_pushButton_clicked()
{
    Oscillograph oscillo(0,"Пример1",1,11,this);
    oscillo.show();

//    Oscillograph oscillo1(2,"Пример1",3,9,this);
}


Сделай oscillo глобальной переменной для MainWindow.
Код:
 oscillo = new  Oscillograph(...this);


Название: Re: Сигнал в дочернем классе
Отправлено: Edynchik от Июнь 18, 2013, 15:14
Спасибо, только осталось одно но: когда пишу в mainwindow.h Oscillograph *oscillo; выдает запрещение декларации без типа


Название: Re: Сигнал в дочернем классе
Отправлено: mutineer от Июнь 18, 2013, 15:17
include забыл, небось


Название: Re: Сигнал в дочернем классе
Отправлено: Edynchik от Июнь 18, 2013, 15:20
не, в mainwindow.h есть #include oscillograph.h...


Название: Re: Сигнал в дочернем классе
Отправлено: mutineer от Июнь 18, 2013, 15:27
его нельзя туда инклудить из-за твоей лапши с инклудами

Код:
#include <QDesktopWidget>
#include <QFileDialog>
#include <QFile>
#include <QDir>
#include <QTimer>
#include <QQueue>
#include <QTextCodec>
#include <QSpinBox>
#include <QLCDNumber>
#include <QPushButton>



#include <qwt_plot.h>
#include <qwt_plot_curve.h>
#include <qwt_plot_grid.h>
#include <qwt_symbol.h>
#include <qwt_legend.h>
#include <qwt_plot_histogram.h>
#include <qwt_series_data.h>

Зачем это все в mainwindow.h и зачем инклудить mainwindow.h в oscillograph.h?


Название: Re: Сигнал в дочернем классе
Отправлено: demaker от Июнь 18, 2013, 15:28
Напиши, код как объявляешь


Название: Re: Сигнал в дочернем классе
Отправлено: Edynchik от Июнь 18, 2013, 15:36
его нельзя туда инклудить из-за твоей лапши с инклудами

Код:
#include <QDesktopWidget>
#include <QFileDialog>
#include <QFile>
#include <QDir>
#include <QTimer>
#include <QQueue>
#include <QTextCodec>
#include <QSpinBox>
#include <QLCDNumber>
#include <QPushButton>



#include <qwt_plot.h>
#include <qwt_plot_curve.h>
#include <qwt_plot_grid.h>
#include <qwt_symbol.h>
#include <qwt_legend.h>
#include <qwt_plot_histogram.h>
#include <qwt_series_data.h>

Зачем это все в mainwindow.h и зачем инклудить mainwindow.h в oscillograph.h?

Цитировать
Зачем это все в mainwindow.h
это осталось от старых времен...
Цитировать
и зачем инклудить mainwindow.h в oscillograph.h?
а это проблема в ДНК...

спасибо за помощь, очень помгли...


Название: Re: Сигнал в дочернем классе
Отправлено: Edynchik от Июнь 18, 2013, 15:36
Напиши, код как объявляешь

спасибо, разобрался...