一、Qt工程管理
新建项目:
我们程序员新建项目对话框所有5类项目模板
Application: Qt的应用程序,包含Qt Quick和普通窗口程序。
Library: 它可以创建动态库、静态库、Qt Creator自身插件、Qt Quick扩展插件。
其他项目: 创建单元测试项目、子目录项目、Qt4设计师自定义控件等。
Non-Qt Project: 可以创建纯C语言或纯C++项目。
import Project: 从版本控制系统来管理软件项目,导入一些我们使用过的项目。
Qt应用程序拥有4个子模板
1、Qt Widgets Application:普通窗口模板,传统基于剖析的窗体界面应用程序。
2、Qt Console Application:控制台应用程序,因为Qt主要用于图形界面设计。
3、Qt Quick(后面的章节我们再详细讲解)
QMainWindow:基于主窗口类的应用程序,一般主要用于比较复杂的程序,除中央客户界面,还可以包括菜单栏、状态状、工具栏及多个停靠的工具对话框等等。
QWidget:最简单最基本的窗口程序,它里面可以容纳很多个控件实现程序等功能。
QDialog:基于对话框,对话框一般主要用于弹窗,也可以用于主界面显示,它是从QWidget继承过来的。
Qt Creator以工程项目的方式对源代码进行管理,一个Qt工程当中包含不同类型的文件,具体如下:
- a: .pro项目描述文件
- b: .h头文件
- c: .cpp源程序文件
- d: .ui界面描述文件
- e: .pro.user用户描述文件
- f: 资源文件(音频、图片等)
二、 项目QMessageBox技巧详解
MessageBox的5个参数
QMessageBox::information(NULL,"information","是否退出系统",QMessageBox::No|QMessageBox::Yes,QMessageBox::No);
第一个参数:是父控件指针
第二个参数:标题名称
第三个参数:信息提示框内容
第四个参数:信息提示框里面有多少个按钮,一般情况下默认为OK
第五个参数:指定按下Enter键时使用的按钮
1、QMessageBox 5种用法
information 消息
critical 错误
warning 警告
question 提问
about 默认消息
QMessageBox::information(NULL,"information","是否退出系统",QMessageBox::No|QMessageBox::Yes,QMessageBox::No);
QMessageBox::critical(NULL,"critical","出错",QMessageBox::No|QMessageBox::Yes,QMessageBox::No);
QMessageBox::warning(NULL,"warning","警告,删除文件有危害",QMessageBox::No|QMessageBox::Yes,QMessageBox::No);
QMessageBox::question(NULL,"question","您的年龄是?",QMessageBox::No|QMessageBox::Yes,QMessageBox::No);
QMessageBox::about(NULL,"about","默认消息提示框"); //默认用法
2、判断QMessageBox 消息框里用户选择了哪个按钮:
void Widget::on_pushButton_iconChose_clicked()
{
QMessageBox messageBox(QMessageBox::NoIcon,"登录","是否登录系统",QMessageBox::No|QMessageBox::Yes,NULL);
int iResult=messageBox.exec();
switch (iResult) {
case QMessageBox::No:
QMessageBox::about(NULL,"提示","你选择了no按钮");
break;
case QMessageBox::Yes:
QMessageBox::about(NULL,"提示","你选择了yes按钮");
default:
break;
}
}
三、GUI运行模式及消息处理模型
1、GUI运行模式
主要是理解main函数里干了什么
mian()主函数中,定义主窗口,再到创建主窗口,再创建主窗口中各种元素,然后显示主窗口,最后进入消息循环
2、消息处理模型
main中创建了一个QApplication 对象a,调用exec()后,整个程序进入事件循环,由QApplication 对象a监控应用程序中所有控件所产生的事件。由exec执行的事件循环监听整个应用程序中所有控件的事件,当某个控件产生相关事件之后,QApplication 对象就会执行 notify 函数,向此控件发送通知,收到事件通知的控件通过 过滤 以及 分发函数,到达事件处理函数,整个过程为响应函数。