1. Qt简介
Qt是一个基于C++的图形用户界面(GUI)框架,可以开发可视化人机交互程序,但是这并不是Qt的全部。Qt除了可以绘制漂亮的界面外,还包含很多其他的功能:多线程、数据库、图像处理、音视频处理、网络通信、文件IO......
Qt开发的产品可以分为两类:
- 纯软开发
.......
- 嵌入式开发
Linux 也是嵌入式的主力军,广泛应用于消费类电子、工业控制、军工电子、电信/网络/通讯、航空航天、汽车电子、医疗设备、仪器仪表等相关行业。
2. Qt优势(掌握)
跨平台:一次编程,到处编译。
面向对象开发
丰富的API和开发文档
开源
......
3. 环境安装与配置
统一要求使用Qt Creator,在开发之前因为先试用Qt Creator开发了C++,当时把编码设置为了System,而Qt不支持System编码,需要在编程之前先把Qt Creator的编码重新重置为UTF-8。
4. 新建项目
新建一个完整的Qt项目的操作步骤如下:
1. 点击
2. 在弹出的窗口中按照下图所示进行操作。
3. 设置项目名称和路径,不能包含中文字符!
4. 直接下一步。
5. 在弹出的窗口中,选择基类为QDialog。
6. 项目管理界面直接点击完成。
7. 项目创建完成后,可以看到文件比C++多。
5. 项目结构(掌握)
在Qt Creator中显示五个文件,如果在Windows打开代码所在的目录(工作目录),可以看到可以有六个文件。
- .pro 项目配置文件
用于配置项目参数,在Windows中双击此文件可导入项目。
#-------------------------------------------------
#
# Project created by QtCreator 2024-10-12T09:31:09
#
#-------------------------------------------------
# 添加core模块和GUI模块
QT += core gui
# 如果当前Qt的主版本号大于4,则添加widgets模块
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
# 生成exe可执行文件的名称
TARGET = HelloWorld0928
# 当前项目以Qt应用程序的方式构建
TEMPLATE = app
# 项目中包含的源文件
SOURCES += main.cpp\
dialog.cpp
# 项目中包含的头文件
HEADERS += dialog.h
# 项目中包含的界面文件
FORMS += dialog.ui
- .user 用户文件
此文件是Qt项目基于当前运行环境生成的用户文件,每个项目、每台计算机的此文件都不通用,在传输项目之间建议删除此文件,如果拿到他人的项目包含此文件,需要在导入项目之前先删除。
- main.cpp 主文件
内部包含主函数——程序执行的入口,此文件通常不需要改动。
#include "dialog.h"
#include <QApplication> // Qt内置类都是Q开头的
int main(int argc, char *argv[])
{
//QApplication类管理GUI应用程序的控制流程和主要设置。
QApplication a(argc, argv);
// Dialog类是项目自动编写的类型
// 此类包含2-3个文件
// 1. dialog.h 头文件
// 2. dialog.cpp 源文件
// 3. diaoog.ui 界面文件(非必须)
// 创建了一个对话框窗口的栈内存对象
Dialog w;
// 展示窗口
w.show();
return a.exec(); // 进入主事件循环
}
- dialog.h
Dialog类的声明。
- dialog.cpp
Dialog类的定义。
- dialog.ui
Dialog类的样式,此文件非必须。
6. 帮助手册(重点)
在Qt中查阅帮助手册的能力非常重要,有三种查阅的方式:
- Windows中搜索Assistant程序,这是一款独立的查阅文档的应用程序。比较适合双屏用户。
- 在Qt Creator中点击,可以直接打开一个Qt Creator内置的Assistant程序。
- 编辑代码时,光标停留在要查询的内容上,双击键盘F1,可以自动跳转到当前内容对应的文档。
查阅文档需要注意下图中红色标记区域。
7. 调试信息类QDebug(掌握)
在Qt中输出调试信息不再使用cout,而是替换为QDebug,因为Qt信息输出是区分前后台的,前台指的是用户可视界面,后台是开发者可见,但用户不可见的区域。
传统的C和C++输出的内容是不区分前后台的。
QDebug可以把调试信息在Qt后台输出,避免用户可见。
新建一个项目,取消Dialog类的界面文件(这样的项目更简单),只需要更改第4节中新建项目的第5步,如下:
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()最后都自动添加换行
// 【Qt命名规范】
// 变量和函数使用小驼峰命名法:
// 第一个单词全小写,后续每个单词的首字母大写
qDebug() << "构造函数" << "调用了";
}
// 析构函数定义
Dialog::~Dialog()
{
qDebug() << "析构函数";
}