《Qt应用开发》笔记

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
  • 1‌994年, Qt Company成立
  • 1995年,TrollTech(奇趣公司)发型了第一个版本。
  • 2008 年被诺基亚收购
  • 2011年 Digia从诺基亚收购 Qt 的商业授权。
  • 2016年Digia 独立并上市。

Qt 的应用领域

  • 军工
  • 航空航天
  • 工业控制
  • 医疗器戒
  • 车载系统
  • ...

Qt 的开发环境:

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
    #include

    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 += widgets

    3. 使用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() << "调试信息";
相关推荐
无名猿4 分钟前
constexpr 能力扩张:从 C++11 到 C++20 的编译期计算
c++·性能优化·现代c++·编译期
007张三丰4 分钟前
C/C++ 内存管理详解:从内存分布到 new/delete 底层原理
java·c语言·c++·内存管理
weixin_4196583114 分钟前
CANoe 使用指南:从输出窗口到数据回放的完整实战教程
开发语言·功能测试·车载系统·自动化·汽车
当青春邂逅吉米多维奇15 分钟前
C#图解教程(第5版) 同步方法
开发语言·c#
骇客野人22 分钟前
Java BIO / NIO / AIO 完整详解 + 编程技巧
java·开发语言·nio
霸道流氓气质25 分钟前
OpenTelemetry 入门与实战:Java Agent、Spring Boot Starter与LLM调用追踪示例
java·开发语言·spring boot
波力海苔夹心脆67530 分钟前
C# 机器视觉实战:单相机引导机械手精准贴合,从拍照、偏差计算(平移+旋转)到坐标补偿全解
开发语言·经验分享·数码相机·c#·视觉检测·.net
龙仔7251 小时前
RustDesk 1.5.0 升级安装故障处理笔记
笔记
外收内放1 小时前
Python基础语法练习题(62原始版本及其优化版本)
开发语言·python
马剑威(威哥爱编程)1 小时前
【AI全栈后端12-12】Spring Boot 3.x 到 4.x 迁移实操:Jakarta 11、Jackson 3 与 AI 2.0
java·开发语言·spring boot·后端