• Qt 基本知识


    Qt 基本知识

    Base class

    • QMainWindow:主窗口
      • 菜单栏
      • 工具栏
      • 状态栏
    • QWidget:空白的窗口
      • 所有界面组件的基类
    • QDialog:对话框类

    Hello World

    • new project >>> Qt Widget Application
    • qmake
      • 后缀为 .pro
    • 基类:QWidget
      • Generate form 不要去掉 >>> 自动生成 ui 文件
    • Kit 一般使用第一个
    • widget.ui 界面加个 label 就行
      • 可以在右下角进行调整

    GUI 程序设计基础

    GUI 程序结构与运行机制

    • xxx.pro:qmake构建系统的项目配置文件,储存了各种项目设置
    • main.cpp:主程序入口文件,实现 main 函数
    • widget.ui:使用 XML 格式描述元件及布局的界面文件
    • widget.h:窗口类定义头文件
      • 用到了 .ui 文件
    • widget.cpp:实现文件

    qmake 配置文件中常见变量的含义(qmake Manual

    含义变量
    QTQT模块列表,在用到某些模块时需要手动添加
    CONFIG通用配置选项
    DEFINES预处理定义列表
    TEMPLATE模板,是 app(应用程序)还是 lib(库) >>> 默认为 app
    HEADERS头文件列表
    SOURCES源程序文件列表
    FORMAUI文件列表
    RESOURCES资源文件(.qrc)列表
    TARGET生成的可执行文件名称 >>> 默认与项目同名
    DESTDIR可执行文件的存放路径
    INCLUDEPATH文件搜索路径列表
    DEPENDPATH其他依赖文件的搜索路径列表
    INSTALLS创建指向目录的符号链接

    qmake

    • 构建项目的软件
      • 根据 .pro 文件生成 Makefile 文件
      • C++ 编译器根据 Makefile 文件进行编译和链接
    • 自动生成 MOC (meta-object compiler) 和 UIC (user interface compiler) 生成构建规则
    • $$ 为替换函数的前缀

    main.cpp

    #include "widget.h"
    #include 
    
    int main(int argc,char *argv[])
    {
        QApplication a(argc,argv);		//定义并创建应用程序
        Widget w;						//定义并创建窗口
        w.show();						//显式窗口
        return a.exec();				//应用程序运行,开始消息循环和事件处理
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    widget.h

    #ifndef WIDGET_H
    #define WIDGET_H
    #include 
    
    namespace Ui		//命名空间
    {
        class Widget;	//从ui_widget.h文件里定义的类,外部声明
    }
    
    class Widget : public QWidget
    {
        Q_OBJECT		//宏,使用Qt信号与槽机制必须添加
    public:
        explicit Widget(QWidget *parent = 0);
        ~Widget();
    private:
        Ui::Widget *ui;	//Ui::Widget类型的一个指针,指向可视化的界面
    };
    
    #endif // WIDGET_H
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    widget.cpp

    #include "widget.h"
    #include "ui_widget.h"
    
    Widget::Widget(QWidget *parent):QWidget(parent),ui(new Ui::Widget)
    {
        ui->setupUi(this);	//实现组件的各种设置、信号与槽的关联
    }
    
    Widget::~Widget()
    {
        delete ui;		//new了要回收
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    认识信号槽

    • 一个 label 、一个 push button
      • 可以对两者进行适当的修改
    • 下方 Signals and Slots Editor
      • 加号
      • 发送者:push button
      • 信号:clicked()
      • 接收者:Widget
      • 槽:close()
    • 可以按 F2 跳转至 ui widget.h

    Qt 项目构建基本原理

    • 可执行文件
      • << 标准 C++ 编译器 << 标准 C++ 程序
        • << MOC << Qt C++ 头文件
        • << UIC << 窗口 UI 文件
        • << RCC << 资源文件
    • 元对象系统(meta-object system)
      • 元对象编译器(MOC)会对项目中的头文件进行预处理
  • 相关阅读:
    【C/C++】使用 g++ 编译器编译 C++ 程序的完全指南
    程序员造轮子:一个基于posix线程库的互斥类(源码)
    【技术栈】Redis 中的事务及持久化方式
    冰点还原精灵DeepFreeze重启后图标不见了
    一文带你迅速掌握python装饰器
    java计算机毕业设计基于安卓Android/微信小程序的学习资料销售平台APP
    OpenGL之变换
    Python突破浏览器TLS/JA3 指纹
    力扣刷题第二十七天--二叉树
    炫酷的表白烟花 html+css+js实现的表白烟花特效(程序员专属情人节表白网站)
  • 原文地址:https://blog.csdn.net/2301_79018328/article/details/136214136