第二个例子要show一下如何响应用户的动作,此应用程序包含了一个按钮,用户点击它可以退出程序。源代码跟前一节的Hello非常类似,除了我们的主widget,这里我们用QPushButton取代上一节的QLabel,然后我们将用户的动作(点击按钮)连接到一段代码上。
- #include <QApplication>
- #include <QPushButton>
- int main(int argc,char *argv[]){
- QApplication app(argc,argv);
- QPushButton *button = new QPushButton("Quit");
- QObject::connect(button,SIGNAL(clicked()),&app,SLOT(quit()));
- button->show();
- return app.exec();
- }
Qt的widget发送各种信号来表示用户的动作或者状态的改变。例如,当用户点击这个按钮时QPushButton发送一个clicked()信号(signal)。一个信号可以连接到一个函数(在该上下文中称为槽(slot)),所以当信号被发出时,对应的槽就自动的执行。在我们的例子中,我们链接这个按钮的clicked()信号到QApplication的app对象的quit()槽上。SIGNAL和SLOT宏是语法的一部分;我们讲在下一章中解释更多它们的细节。
注意这里的信号跟Unix的信号不搭界,在这本书中我们仅仅链接Qt的信号。
现在build这个application,运行之。如果你点击Quit按钮,或者按空格键(等于按下按钮),这个application会中止。