Russian Qt Forum

Qt => Общие вопросы => Тема начата: Taras.ua от Июль 08, 2009, 15:41



Название: обработчик для QPushBotton
Отправлено: Taras.ua от Июль 08, 2009, 15:41
Как назначить собственную функцию обработки сигнала?

Код:
connect(button, SIGNAL(clicked()), qApp, SLOT(quit())); 
Тут используется функция класса приложения. Как туда прописать свою функцию?

Код:
 #include <qapplication.h>
 #include <qpushbutton.h>
#include <QDialog>


 int main(int argc, char *argv[])
 {
   QApplication app(argc, argv);
   QPushButton *button = new QPushButton("Quit", 0);
   QObject::connect(button, SIGNAL(clicked()), &app, SLOT(slotTest()));

   button->show();
   return app.exec();
}
void slotTest()
{
    QDialog *dialog = new QDialog();
    dialog->show();

}

так не работает. Что я делаю не правильно?


Название: Re: обработчик для QPushBotton
Отправлено: pashazz от Июль 08, 2009, 15:47
   QObject::connect(button, SIGNAL(clicked()), &app, SLOT(slotTest()));
Бред! при чем тут &app? Ведь slotTest не является слотом и вообще членом app


Название: Re: обработчик для QPushBotton
Отправлено: spectre71 от Июль 08, 2009, 15:48
Код
C++ (Qt)
class MyPushButton : public QPushButton
{
Q_OBJECT
 
....
....
 
public slots:
 void slotTest(void);
 
};
 
void MyPushButton ::slotTest(void)
{
   QDialog *dialog = new QDialog();
   dialog->show();
 
}


Название: Re: обработчик для QPushBotton
Отправлено: f-r-o-s-t от Июль 08, 2009, 15:49
http://doc.trolltech.com/4.5/signalsandslots.html
http://doc.crossplatform.ru/qt/4.3.5/signalsandslots.html ( на русском )


Название: Re: обработчик для QPushBotton
Отправлено: Taras.ua от Июль 08, 2009, 16:06
Спасибо за ответ.
Меня интересовал вопрос обработки нажатия кнопки, как в студии. Но, как я понимаю, тут только нужно свой класс создавать и в нем создавать сигнал и слот...


Название: Re: обработчик для QPushBotton
Отправлено: spectre71 от Июль 08, 2009, 16:13
Спасибо за ответ.
Меня интересовал вопрос обработки нажатия кнопки, как в студии. Но, как я понимаю, тут только нужно свой класс создавать и в нем создавать сигнал и слот...
Да, но это не обязательно наследник QPushButton, и тем более не надо переоределять каждую кнопку итд.
У тебя , например, есть окно где лежат все контролы, вот у этого окна и сделаешь кучку слотов и зацепишь на них сигналы своих контролов :)