1.2
建立连接
第二个例子要说明的是如何响应用户的动作。应用程序由一个按钮构成,用户可以单击这个按钮退出程序。
QPushButton
做窗口部件,与
QLabel
不同之处
.
第一个窗口部件不一样,第二
QPushBotton
要用的信号与槽,当点击
PushButton
以后,
Qt
就会响应这个动作将与一段代码连接起来响应退出。
编写的程序与
QLabel
标签窗口部件实现很相似。
#include <QApplication>
//
定义一个
Qt
的
QApplication
类头文件,所有的
Qt
图形化应用程序都必须包含此文件,它包含了
Qt
图形化应用程序的各种资源、基本设置、控制流以及事件处理等。如果
Qt
的非图形化应用程序,则需包含
<QCoreApplication>
#include <QPushButton>
//
定义一个
QPushButton
类头文件,对于每个类的公众
Qt
的
Application
的一部分
,
存在着一个相同的名称包含其定义的头文件。
QPushButton
是一个
GUI
按钮,用户可以按下和释放。它管理自己的外观和所有其他
Qwidget
窗口部件的动作。
QPushButton
小部件是一个用户界面的对象,可以处理用户输入和绘制图形。可以修改
QPushButton
的整体外观,如:颜色和头一些次要属性,及
PushButton
部件的内容。可以用
QPushButton
来显示任何文本或
QIcon
图标。
int main(int argc,char *argv[]) //
应用程序的主函数的入口点,
Qt
的主函数只需要执行之前,通过控制权限交给
Qt
库,然后响应有关事件的用户的行为方案的一些初始化的类。
Argc
参数是命令行参数的数量
,argv
是命令行参数的数组。这是标准的
C++
功能
{
QApplication app(argc,argv);
//
创建一个
QApplication
对象,用来管理整个应用程序所用到的资源。
QApplication
构造函数需要两个参数,分别是
argc
和
argv
,以便
QApplication
可以处理一些标准命令参数。所有的命令行参数被
Qt
确认删除从
argv
中获取,和
argc
相应递减。
QPushButton *button = new QPushButton(“Quit”);
//
创建一个
button
按钮对象,并设置为显示文本
”Quit”
,因为没有指定父窗口,因此按钮将是其自己的窗口,有窗口框架和标题。
QObject::connect(button,SIGNAL(clicked()),&app,SLOT(quit()));
//
这里
QObject::connect
是
Qt
的最重要的特征。
Connect
()是
QObject
的静态函数,这个
connect()
调用之间建立了两个
Qt
对象(对象继承
QObject
,直接或间接)单向连接,这里的对象为
button,
和
QApplication
应用程序自身的对象
app
。
Qt
的每个对象可以有两个信号(
SIGNAL
)为发送和槽(
SLOT
)为接受。这里定义的
clicked
()信号连接到退出
quit()
应用程序的插槽中,当点击
QPushButton
时,该按钮就会发送一个
clicked()
信号,槽就可以自动执行退出。
quit()
是
QApplication
的一个退出函数
button->show();
//
将对象
button
窗口部件显示出来
return app.exec();
//
应用程序将所有的控制权限传递给
Qt
。此时,程序进入事件循环状态,也就是说显示这个
QPushButton
窗口部件,等待用户的动作。当用户点击
QuitQPushButton
到松开
QPushButton
,完成了点击动作。这时,应用程序将这个点击鼠标信号事件发射到连接的连接槽,槽接受到
clicked()
信号后执行退出
quit(),
在退出之前,
QApplication
运用
exec()
方法,将
Qt
将完成事件处理及显示的工作在应用程序退出时返回
exec()
的值
}
[root@localhost root]# mkdir quit
//
在
root
主目录下创建一个名为
quit
的目录
[root@localhost root]# cd quit/
//
切换到刚才创建
quit
目录
[root@localhost quit]# vi quit.cpp
//
用
vi
命令创建一个名为
quit
的
C++
程序源文件
#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();
}
[root@localhost quit]# qmake �Cproject
//
执行
qmake �Cproject
生成一个与平台无关的
quit.pro
项目文件
[root@localhost quit]# qmake quit.pro
//
执行
qmake
后跟指定的
quit.pro
项目文件,生成一个与平台相关的
Makefile
文件
[root@localhost quit]# make
//
执行
make
命令后,编译
quit.cpp
文件源代码,并生成
quit.o
目标文件及
quit
可执行文件
[root@localhost quit]# ./quit
//
输入点反斜杠跟执行文件,点击回车,如果成功的话就会弹出一个
QPushButton
窗口部件出来,
QPushButton
显示的文本为
Quit
,点击
Quit
按钮就会退出。
初探Qt的SIGNAL and SLOT就介绍到这里。。。感谢您的阅读。。