第1章基本对话框.doc
文本预览下载声明
Linux窗口程序设计——Qt4精彩实例分析
第1章 基本对话框
PAGE 46
PAGE 47
第1章 基本对话框
本章的实例对Qt编程的基本流程、标准对话框的使用方法以及Qt?Designer的使用方法等进行了分析,包括11个实例:
Hello World!
标准对话框的使用
各类位置信息
使用标准输入框
各种消息框的使用
实现QQ抽屉效果
表格的使用
使用进度条
利用Qt Designer设计一个对话框
在程序中使用ui
动态加载ui
实例 SEQ 实例 \* ARABIC 1 Hello World!
知识点:
开发Qt程序的基本流程和编译运行方式
信号和槽机制(SignalSlot)
本实例实现一个“Hello World!”例子,简单介绍Qt编程的基本流程,以及Qt程序的编译运行方式。实例效果图如图1-1所示。
??图1- SEQ 图 \* ARABIC \s 1 1 Hello World!
这是一个简单的例子,整个对话框只有一个按钮,单击该按钮,对话框关闭,退出 程序。
实现代码如下:
1 #include QApplication
2 #include QPushButton
3 int main(int argc, char *argv[])
{
4 QApplication app(argc,argv);
5 QPushButton b(Hello World !);
6 b.show();
7 QObject::connect(b,SIGNAL(clicked()),app,SLOT(quit()));
8 return app.exec();
}
第1行包括QApplication,所有Qt图形化应用程序都必须包含此文件,它包含了Qt图形化应用程序的各种资源、基本设置、控制流以及事件处理等,若是Qt的非图形化应用程序,则需包含QCoreApplication。
小贴士:Qt最初的框架只有关于图形化应用的类,随着它的一步步发展,Qt已独立发展出了许多非图形化的类库,如数据库应用、XML解析等。
第2行包含了程序中要应用到的按钮控件的头文件。
小贴士:在Qt4中,头文件的包含可以采用类似QApplication和QPushButton的形 式,也可以写成qapplication.h和qpushbutton.h的形式。
第3行为应用程序的入口,所有Qt程序都必须有一个main()函数,以argc和argv作为入口参数。
第4行新创建了一个QApplication对象,每个Qt应用程序都必须有且只一个QApplication对象,采用argc、argv作为参数,便于程序处理命令行参数。
第5行创建了一个QPushButton对象,并设置它???显示文本为“Hello World !”,由于此处并没有指定按钮的父窗体,因此以自己作为主窗口。
第6行调用show()方法,显示此按钮。控件被创建时,默认是不显示的,必须调用show()函数来显示它。
第7行的QObject::connect()方法是Qt最重要的特征,即信号与槽的机制。当按钮被按下则触发clicked()信号发射,与之相连的QApplication对象的槽quit()响应按钮信号,执行退出应用程序的操作。关于信号与槽机制在本实例最后将进行详细的分析。
最后调用QApplication的exec()方法,程序进入消息循环,等待可能输入进行响应。Qt完成事件处理及显示的工作,并在应用程序退出时返回exec()的值。
Qt程序的编译运行很简单,利用Qt提供的qmake工具能够很方便地对程序进行编译,编译流程如下:
qmake –project
qmake
make
./hello
其中,qmake –project命令用于生成程序的项目文件(*.pro);qmake用于生成程序的Makefile文件;make编译Makefile文件得到可执行文件;最后执行程序即可出现 图1-1所示的对话框,一个简单的Hello World!例子完成。
小贴士:确保Qt的环境变量路径设置正确,程序编译时若出现连接错误,请首先检查 有关Qt的环境变量,保证调用的qmake为相应的Qt版本。
信号与槽机制(signalslot)作为Qt最重要的特性,提供了任意两个Qt对象之间的通信机制。其中,信号会在某个特定情况或动作下被触发,槽是用于接收并处理信号的函数。例如,要将一个窗口中的变化情况通知给另一个窗口,则一个窗口发送信号,另一个窗口的槽接收此信号并进行相应的操作,即可实现两个窗口之间的通信。这比传统的图形化程序采用回调函数的方式实现对象间通信要简单灵活得多。每个Qt对象都包含
显示全部