GUI 简介
GUI (Graphical User Interface)图形用户接口。
printf("%d", 100);
scanf("%d", &x);
cout << x;
cin >> x;
GUI种类:
- Qt
- X11
- Android
- iOS
- HarmonyOS
什么是Qt
Qt 是一个跨平台的,使用C++ 开发的图形用户界面库。
开发商 是Qt Company,主要用于做图形用户接口。
Qt 支持的平台:
- Windows
- Linux
- MacOS
- Android和 iOS(支持的不好)
- 国产的操作系统。
Qt 框架的工具包包括:Qt界面库、数据库接口、多线程接口、网络接口、文件处理等。
Qt的发展历史:
- 源于 1991年 Haavard Nord和Eirik Chambe-Eng,创建。早期支持 X11和Windows
- 1994年, Qt Company成立
- 1995年,TrollTech(奇趣公司)发型了第一个版本。
- 2008 年被诺基亚收购
- 2011年 Digia从诺基亚收购 Qt 的商业授权。
- 2016年Digia 独立并上市。
Qt 的应用领域
- 军工
- 航空航天
- 工业控制
- 医疗器戒
- 车载系统
- ...
Qt 的开发环境:
-
官方下载地址:https://download.qt.io/
- 还可以去国内的开源网站下载(如:清华、中国科技大)。
-
Qt 的官方网站: https://www.qt.io/
-
Qt的官方文档:https://doc.qt.io/
Linux 下安装Qt 的方法
Qt5安装文档:
sudo apt update
sudo apt install -y g++
sudo apt install -y make
sudo apt install -y qt5-default
sudo apt install -y qtcreator
安装说明:
- Qt只是一套C++写的界面库,没有编译器。编译器需要根据不同的应用平台额外安装。
第一个 Qt 程序
1、编写Qt程序
-
Qt使用C++编写,书写程序时,头文件后缀为
.h
,实现文件后缀为.cpp
// 1. 创建一个工程文件夹 project_hello
// mkdir project_hello
// cd project_hello
// 2. 编写 hello.cpp ,内容如下:#include <QApplication>
#include <QLabel>int main(int argc, char * argv[]) {
// 构建Qt的应用对象,需要传入命令行参数.
QApplication app(argc, argv);
// 创建一个QLabel(标签对象,用来显示一段文字);
QLabel w("Hello Qt!");
// 让此对象作为窗口显示
w.show();
// 进入Qt应用对象的时间循环。
return app.exec();
}
2、编译Qt程序
-
编译工具 qmake、CMake和Qbs(都是用于构建和管理项目的工具)
-
编译过程
1. 创建工程,工程名就是 文件夹名.pro
qmake -project
2. 改写 xxx.pro ,最后一行加入
QT += widgets3. 使用qmake 生成 Makefile
qmake
3. 使用 Makefile 生成可执行程序。
make
4. 运行Qt可执行程序
./project_hello
3、运行Qt程序
./project_hello
清理运行环境
# 删除所有的目标和中间文件,包括Makefile和可执行程序。
make distclean
# 只删除目标和中间文件,不删除Makefile和可执行程序。
make clean
窗口系统
左上角是(0,0) ,向右是宽,向下是高
widget 的中文含义是窗口小部件。
窗口系统大概图示:

QWidget 类
- QWidget类是一切可见窗口类的基类。
- QWidget公有成员函数子类都会继承,在子类中可用。
常用QWidget的成员函数
.size(). 返回窗口的大小
.resize(int w, int h) 设置窗口的大小
.resize(const QSize &) 设置窗口的大小
.move(int x, int y) 移动窗口的位置。
.setWindowTitle("xxx")设置窗口标题。
override关键字
作用:子类在重写父类的虚函数时, override 关键字在父类没有此虚函数时会在编译阶段报错。
示例:
#include <iostream>
using namespace std;
class A {
public:
virtual void showInfo(void) {
cout << "A:showInfo" << endl;
}
};
class B :public A {
// 错写了父类的成员函数名会报错。
void show1nfo(void) override {
cout << "B:showInfo" << endl;
}
};
int main()
{
B b;
b.showInfo();
cout << "Hello World!" << endl;
return 0;
}
Qt 常用的Widget
- 按钮: QPushButton
- 标签:QLabel
- 行输入框:QLineEdit
- 多行输入框:QTextEdit
- 单选按钮:QRadioButton
- 复选框:QCheckBox
- 组合框:QComboBox
- 整数微调数组输入框:QSpinBox
输出调试信息
// 头文件
#include <QDebug>
// 使用方法:
qDebug() << "调试信息";