Russian Qt Forum

Qt => Общие вопросы => Тема начата: myr от Сентябрь 15, 2009, 12:46



Название: Как настроить главное окно приложения на прием сигналов от дочерних форм.
Отправлено: myr от Сентябрь 15, 2009, 12:46
Есть главная форма Form1.
Создаем в ней немодальную форму Dialog1.(Dialog1 = new QDialog(this);)
Запускаем Dialog1.
В форме Dialog1 создаем сигнал signal.
В главной  форме  Form1 создаем слот  void Slot();
В конструкторе главной формы Form1 подключаем
connect(Dialog1,SIGNAL(signal),this,SLOT(slot()));

В форме Dialog1 emit signal(); 
Ничего  не происходит.
Как настроить главное окно проиложения на прием сигналов от дочерних форм.
Спасибо.

 



Название: Re: Как настроить главное окно приложения на прием сигналов от дочерних форм.
Отправлено: kuzulis от Сентябрь 15, 2009, 12:50
код в студию


Название: Re: Как настроить главное окно приложения на прием сигналов от дочерних форм.
Отправлено: myr от Сентябрь 15, 2009, 13:14
Код
C++ (Qt)
class Form0 : public QMainWindow
{
public:
   frmTree *dlgTree;
}
 
class frmTree : public QDialog
{
 
signals:
   void signal(int pu_id);
}
 
void  frmTree::Func(int t)
{
        emit signal(pu_id_int);  
}
 
 
void  Form0::init()
{
 dlgTree = new frmTree(this);
 dlgTree->setModal(false);
}
 
class Form1 : public Form0
{
public :
 Form1(QWidget *parent = 0, const char *name = 0,  WFlags fl = WType_TopLevel);
public slots:
   void Slot(int pu_id);
 
};
 
Form1::Form1(QWidget *parent, const char *name, WFlags fl) :Form0(parent, name, fl)
    connect(dlgTree, SIGNAL(signal(int)), this, SLOT(Slot(int)));
}
 
 
void  Form1::Slot(int pu_id){
        QMessageBox::warning(0, "sdfs","sdfsdkfj");
}
 
 
 
int main( int argc, char ** argv )
{
         QApplication a( argc, argv );
         Form1 *myForm = new Form1;
         myForm->show();
         a.setMainWidget( myForm );
          int res = a.exec();
 
}


  
 :o


Название: Re: Как настроить главное окно приложения на прием сигналов от дочерних форм.
Отправлено: kuzulis от Сентябрь 15, 2009, 13:46
а где вызывается метод: void  Form0::init() ??


Название: Re: Как настроить главное окно приложения на прием сигналов от дочерних форм.
Отправлено: myr от Сентябрь 15, 2009, 14:03
Это конструктор формы.
Вызываеться автоматически.
Диалоговое окно dlgTree  создаеться и открываеться.


Название: Re: Как настроить главное окно приложения на прием сигналов от дочерних форм.
Отправлено: kuzulis от Сентябрь 15, 2009, 14:08
Цитировать
Это конструктор формы.
Ась? О_О


Название: Re: Как настроить главное окно приложения на прием сигналов от дочерних форм.
Отправлено: myr от Сентябрь 15, 2009, 15:17
У нас штука такая Конструктор под МСВС. Связянный Qt designer и develop.ъ
При генерации cpp из ui.h в конструктор класса Form0,  вставляется init();

Как дочерняя форма  может послать сигнал родителю?


Название: Re: Как настроить главное окно приложения на прием сигналов от дочерних форм.
Отправлено: Lostinnet от Сентябрь 21, 2009, 12:27
а разве не надо добавить в класс frmTree  и Form1  макрос Q_OBJECT


Название: Re: Как настроить главное окно приложения на прием сигналов от дочерних форм.
Отправлено: Alp от Сентябрь 22, 2009, 21:00
а разве не надо добавить в класс frmTree  и Form1  макрос Q_OBJECT
Правильно. И вызвать qmake для правильной перегенерации moc_***.cpp