先看代码:
#include<QtGui/QApplication>
#include<QPushButton>
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QPushButton w("hello world!!");
w.show();
QObject::connect(&w,SIGNAL(clicked()),&app,SLOT(quit()));
return app.exec();
}
代码解析:
1) Qt图形化应用程序必要的头文件<QApplication>
2) Qt按钮控件头文件<QpushButton>
3) 每个Qt应用程序都有且只有一个QApplication 对象,argc、argv为参数
4) w 为QPushButton 对象
5) Show()显示w里面的内容
6) QObject::connect为信号与槽的机制,当按钮被按下则触发clicked()信号发射,
与之相连的app的槽quit()相应按钮信号,执行退出应用程序的操作。
代码编译:
*.pro 项目文件
qmake -project 用于生成程序的项目文件
qmake 用于生成程序的Makefile
make 用于编译Makefile文件得到可执行文件
最后出现hello world!!
重点:
信号与槽机制(signal&slot)
提供了任意两个Qt对象之前的通信机制。信号会在某个特定情况或动作下被触发,槽是用于接收并处理信号的函数。例如:要将一个窗口的变化情况通知另一个窗口,则一个窗口发送信号,另一个窗口的槽接收到此信号并进行相应的操作,即可实现两个窗口之间的通信。
常用连接方式:
Connect(Object1,SIGNAL(signal), Object2, SLOT(slot));
SIGNAL为对象Object1的信号
SLOT为对象Object2的槽
多种连接方式:
1)一个信号可以连接另一个信号
Connect(Object1,SIGNAL(signal), Object2, SIGNAL(signal));
表示对象Object1的信号signal可以触发Object2的信号signal发射
2)同一个信号可以与多个槽相连接
Connect(Object1,SIGNAL(signa2), Object2, SLOT(slot1));
Connect(Object1,SIGNAL(signa2), Object3, SLOT(slot2));
3)同一个槽可以响应多个信号
Connect(Object1,SIGNAL(signa2), Object2, SLOT(slot2));
Connect(Object3,SIGNAL(signa2), Object2, SLOT(slot2));