课程之前
Qt的课程性质决定了授课的方式与C++完全不同,C++更侧重基础语法的学习,Qt更侧重于综合编程能力的体现。课堂的内容更重要的是教授编程的思路,并通过实践来巩固C++的理论。不要仅仅满足与照搬代码。
因为查询的文档全部都是英文的,最好准备好一个好用的翻译软件。
Qt是什么?
Qt是一个基于C++编程语言的GUI(Graphical User
Interface,图形用户界面)开发框架,但是Qt不仅仅只有界面编程。除了GUI功能之外,Qt还包含了很多其它功能,比如多线程、数据库、图形图像处理、网络通信、文件读写等。
学习中使用的版本是Qt的5.2.1版本 Qt的主要使用领域如下:
● 上位机控制程序
给用户提供一个带界面的客户端程序,用来控制嵌入式设备。例如:医疗设备、工业控制、航空航天等领域。 ● 嵌入式产品内置图形交互程序
嵌入式产品硬件自带屏幕,屏幕中运行一款与用户直接人机交互的程序。例如:电子商务、电子政务、汽车电子、仪器仪表等。
● 纯软件客户端
纯软件产品,例如:WPS、yy语音、Skype、暴雪战网客户端等等。
Qt优势
跨平台:一次编程、到处编译
面向对象开发
丰富的API
大量的开发文档
易用的开发环境
开源
第一个Qt项目
在创建项目之前先把Qt Creator的编码改为UTF-8,后重新启动Qt Creator。
-
点击
弹出创建项目的窗口。 -
在弹出的窗口中,依次点击,如下所示。
-
在弹出的窗口中,配置项目名称等参数,点击“下一步”
-
在
窗口,直接点击“下一步”。
-
在
窗口,选择基类为“QDialog”,点击“下一步”。
-
在
窗口,直接点击“完成”,项目创建完毕,点击运行可以展示一个空白弹窗。
工作目录与构建目录
在新创建的项目中,点击左栏的
,可以看到构建目录的路径,如果是红色的表示还没有运行过本项目,如下所示。
如果没有运行项目的话,这里的路径会是红色的
运行之后就会变成黑色的
构建目录是存放编译过程中生成的文件和最后的可执行程序的位置。
工作目录是建立项目时配置的目录,存放源代码和项目配置文件等。
我们也可以把上图中的影子构建模式关闭,关闭后构建目录就是工作目录,这样能提升程序编译的稳定性。
这个方法不建议使用,方法的主要目的是遇到程序构建出问题时,可以使用这个方法解决问题。
Assistant帮助文档
Assistant是一款应用程序的名称,随着Qt Creator的一并安装。
打开帮助文档的方式有:
-
直接在开始菜单中查找程序并打开。
-
Qt Creator中可以直接切换到Assistant程序,只需要点击
-
光标定位到要查找的内容上,双击键盘F1
Qt项目结构
- .pro项目配置文件
#-------------------------------------------------
#
# Project created by QtCreator 2022-05-12T15:06:24
#
#-------------------------------------------------
# 本项目引入的core、gui模块
QT += core gui
# 当Qt的主版本号大于4时,引入widgets模块
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
TARGET = Hello_Qt # 可执行文件名称
TEMPLATE = app # 本项目的构建使用Qt应用程序的方式
# 本项目包含的C++源文件
SOURCES += main.cpp\
dialog.cpp
# 本项目包含的头文件
HEADERS += dialog.h
# 本项目包含的界面文件
FORMS += dialog.ui
- dialog.h 头文件
自定义对话框窗口类Dialog的声明,Qt中把函数的声明都放在头文件中。
- dialog.cpp 源文件
自定义对话框窗口类Dialog的定义,Qt中把函数的定义都放在源文件中。
- main.cpp 源文件
#include "dialog.h"
#include <QApplication>
/**
* @brief main 主函数,程序的入口
* @return
*/
int main(int argc, char *argv[])
{
// 应用程序的“大管家”
QApplication a(argc, argv);
// 创建了一个自定义对话框窗口类对象
Dialog w;
// 显示窗口和窗口的内容
w.show();
return a.exec(); // 进入主事件循环,保证主函数不结束
}
- .ui界面文件
后续结合Designer程序,用于快速搭建程序界面。
QDebug 调试信息类
在讲解此类之前,先做一个约定,前期创建项目更改第5步,类信息窗口,取消“创建界面”的勾选,如下所示:
这样创建出的项目结构更纯粹简单,适合初学者。
Qt输出一些调试信息使用QDebug类,不使用cout和printf相关类。
dialog.h
#ifndef DIALOG_H
#define DIALOG_H
#include <QDialog>
// 引入头文件
#include <QDebug>
class Dialog : public QDialog
{
Q_OBJECT
public:
Dialog(QWidget *parent = 0);
~Dialog();
};
#endif // DIALOG_H
dialog.cpp
#include "dialog.h"
Dialog::Dialog(QWidget *parent)
: QDialog(parent)
{
// 输出信息并换行
qDebug() << "构造函数";
qDebug() << "-----" << "创建创建" << "-----";
}
Dialog::~Dialog()
{
// 输出信息
qDebug() << "析构函数";
}
所谓的调试信息,是不给用户可见的,因此QDebug输出的信息只在开发的后台。后续的开发建议在一些关键的节点使用QDebug输出一些关键的信息和参数值,有助于程序的错误追踪。