目录
1. Qt是什么?
这门课的定位:
● C++的实践课
● 系统性的认识图形用户界面编程GUI
● 新的就业方向
Qt虽然被经常当做是一个基于C++语言的图形用户界面(GUI)的开发框架,用来开发图形用户界面的应用程序,但是这并不是Qt的全部。除此之外,Qt还支持许多非图形用户界面的功能,例如多线程、数据库、图像处理、音视频处理、网络通信、文件IO操作等。
学习Qt五阶段
➢ 第一阶段 Qt简介、UI入门、信号槽
➢ 第二阶段 Qt中常用组件与常用类
➢ 第三阶段 多窗口编程
➢ 第四阶段 文件IO、数据库、网络编程
➢ 第五阶段 项目打包、小项目
Qt在软件开发领域,使用广泛,主要分为以下三类:
1. 纯软件开发
此方向与嵌入式的关系不大,这种方式开发的Qt程序本身作为一款独立的产品存在,例:
2. 嵌入式上位机
用来控制和获取下位机的数据的应用程序,例如:
3. 直接成为嵌入式产品的控制程序
对于某些自身带有屏幕的嵌入式产品,其内部的控制交互程序可以使用Qt进行开发,例如:
Qt最重要的特点就是其跨平台的特性,Qt的跨平台指的是一次编程,到处编译。
另外Qt还有一些通用性的特点:
● 面向对象开发
● 丰富的应用程序接口API
● 易用的开发环境
● 开源
● 大量的开发文档
2. 新建项目
本次Qt开发依然使用C++课程中的Qt Creator,但是需要把软件的编码设置成初始值:
更改完成后,才可以新建一个正常支持中文的Qt项目,操作步骤如下:
1. Qt Creator 中点击
2. 在弹出的窗口中,如下操作:
3. 在弹出的窗口中设置项目名称和路径,注意不能包含中文字符!
4. 直接点击下一步
5. 在弹出的窗口中,选择基类“QDialog",取消界面创建选项,点击下一步
6. 在项目管理界面,直接点击完成。可以看到项目中的文件
7. 点击运行,项目运行后可以看到一个可视化窗口
3. 构建目录和工作目录
项目运行后,存在两个重要目录:构建目录和工作目录
3.1 构建目录
存放项目编译过程中生成的文件,这个目录的位置:
构建目录的重点会在最后一天涉及,前期使用较少
3.2 工作目录
工作目录就是创建项目时设置的目录,用于存放项目的源代码等开发文件。
工作目录可以通过下面的方式定位:
工作目录下包含以下文件:
本门课作业提交为工作目录打包。
4. 项目结构
4.1 项目配置文件.pro
此文件在纯C++中也存在,用于配置项目的参数。
在Windows的文件管理器下,双击文件打开项目。
#-------------------------------------------------
#
# Project created by QtCreator 2024-05-17T09:33:47
#
#-------------------------------------------------
# 添加了Core核心模块,Gui传统的用户图形界面模块
QT += core gui
#当Qt版本大于4 ,添加Widgets模块新的用户图像界面模块
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
# 生成的可执行文件的名称 Day1_24011_helloQt.exe
TARGET = Day1_24011_helloQt
# 编译方式
TEMPLATE = app
# 项目中包含的源文件
SOURCES += main.cpp\
dialog.cpp
# 项目中包含的头文件
HEADERS += dialog.h
4.2 用户文件 .user
用户在Qt Creator中不可见,但是确实存在于工作目录中(项目构建后)
此文件是Qt根据当前计算机的开发环境自动生成的文件,每个计算机几乎不通用此文件,因此在提交代码时,先删除此文件。
4.3 主文件 main.cpp
程序的入口,包含主函数。通常不需要更改主函数的代码
#include "dialog.h"
// 管理GUI应用程序的控制流和主设置
#include <QApplication>
/**
* @brief main 主函数,程序的入口
* @return
*/
int main(int argc, char *argv[])
{
// 创建了管家栈内存对象,管理整个应用程序
QApplication a(argc, argv);
// 创建了自定义对话框窗口的栈内存对象
Dialog w;
// 展示
w.show();
return a.exec(); // 进入主循环事件
}
4.4 头文件 dialog.h
在Qt中一个自定义类的声明都写在.h中,这个类所用到的其他类头文件,也在此文件中引入。
#ifndef DIALOG_H
#define DIALOG_H
// Qt 自带的类型使用Q开头
#include <QDialog>
/**
* @brief The Dialog class 自定义对话框窗口类
* 继承了QDialog类
*/
class Dialog : public QDialog
{
Q_OBJECT
public:
Dialog(QWidget *parent = 0); // 构造函数
~Dialog(); // 析构函数
};
#endif // DIALOG_H
4.5 源文件 dialog.cpp
包含与同名的头文件配套的类外定义。
#include "dialog.h"
/**
* @brief Dialog::Dialog 构造函数
* @param parent
*/
Dialog::Dialog(QWidget *parent)
: QDialog(parent) // 透传构造
{
}
// 析构函数
Dialog::~Dialog()
{
}
5. 帮助文档
学习Qt一定要学习如何查询文档,通常对于不是很常用内容在开发时都是随用随查,官方文档是第一手资料。
有三种查询文档的方式:
1. 直接启动Assistant程序,是一个独立的文档程序。
2. 在Qt Creator中直接点击
,可以打开一个内嵌的Assistant程序。
3. 光标定位到要查询的内容上,双击键盘F1,可以直接跳转到对应的文档内容。
帮助文档中需要重点关注:
Tips:
帮助文档翻页方式
1. alt + 方向键← →
2.
直接点击左上角箭头
3. 鼠标侧键
6. 调试信息
在C语言与C++中,无论是printf还是cout输出的内容都不区分前后台,但是Qt中输出内容是区分前后台的,通常前台指的是图形用界面,用户可以直接通过软件界面看到;后台指的是在Qt Creator的
(控制台)中,这里显示的信息用户是不可见的,只对开发者开放。
使用QDebug类的qDebug()函数输出调试信息,支持中文。整个的使用方式与cout类似,但是有以下区别:
● 连续输出时,自动添加空格
● 每次输出语句结束时,自动添加换行
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() << "构造函数" << "hello Qt" ;
}
Dialog::~Dialog()
{
qDebug() << "析构函数" ;
}
当程序正在运行时,再次运行可能会出现下面的情况,只需要关闭当前正在运行的项目重新运行即可。