发布于 

我的 QT 学习记录 01

一、写在前面

  1. 这是一个我自己的 QT 学习记录,不再进行 QT 相关介绍,只记录个人学习过程与一些笔记。
  2. 参考教程:B站千锋教育QT教程 版本1 版本2

二、下载与安装

  1. QT 官网 是很容易找到的,但是社区版的下载地址不容易直接找到

  2. 由于高版本 QT 官方只提供了网络安装版,故下载安装 QT 维护工具 Qt Maintenance Tool

  3. 需要注册账户并登录,如图,然后下一步。
    QT01-01

  4. 选择直接提供的 QT6.6 的选项,这样能避免后来自己选组件导致的发现缺少了编译器或者库的尴尬局面。

  5. 一路向下,等待下载安装完成

三、HelloWorld

  1. 打开新安装的 QTCreater ,创建项目
    QT01-02

  2. 选择 Qt Widget

    QT01-03

  3. 设置保存位置和项目名字

  4. 把构建系统从 cmake 改为 qmake

  5. 选择 QWidget,取消勾选Generate form

    QT01-04

  6. 一直下一步,直到完成

  7. Ctrl+B 构建项目,Ctrl+R 运行项目,此时出现一个空窗口,完成。

四、补充说明

  1. .pro 文件是 qmake 的配置文件, Qt 可以使用 cmakeqmake 构建。相对而言,qmake更简洁,更方便;cmake和其他语言交互更好,更通用。

  2. 一般而言,把写的主要窗口逻辑放在Widget.cpp里面

  3. 默认生成的.pro文件介绍

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    QT       += core gui # 井号是行注释
    greaterThan(QT_MAJOR_VERSION, 4): QT += widgets #大于Qt4版本才包含此模块
    CONFIG += c++17 #语言规范默认设置为 C++17

    # You can make your code fail to compile if it uses deprecated APIs.
    # In order to do so, uncomment the following line.
    #DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0

    SOURCES += \ #源代码文件包含
    main.cpp \
    widget.cpp

    HEADERS += \ #头文件包含
    widget.h

    # Default rules for deployment.
    qnx: target.path = /tmp/$${TARGET}/bin
    else: unix:!android: target.path = /opt/$${TARGET}/bin
    !isEmpty(target.path): INSTALLS += target
  4. 默认 main.cpp 介绍

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    #include "widget.h" //Qt一个类对应一个头文件
    #include <QApplication>

    int main(int argc, char *argv[])
    {
    QApplication a(argc, argv);//一个程序有且仅有一个QApplication
    Widget w; // 构造 Widget
    w.show(); // 显示 Widget
    return a.exec(); //进入事件循环
    }
  5. Qt 窗口坐标系

    1. 从左向右x轴 增大的方向
    2. 从上到下y轴 增大的方向
    3. (0,0) 是左上角起始位置
  6. Qt 有帮助手册可以参考,程序名为Assistant…..

五、空窗口上放置控件–按钮示例

以下为Widget.cpp 示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include "widget.h"
#include <QPushButton>

Widget::Widget(QWidget *parent) //构造函数,大致理解为初始化、赋初值
: QWidget(parent)
{
//修改窗口标题
this->setWindowTitle("第一个窗口");
//设置窗口大小
this->resize(600,400);
//设置为固定大小,不可拉伸
this->setFixedSize(500,500);

//新建按钮-方式1
QPushButton *button= new QPushButton;
//设置按钮属性
button->setText("我是按钮");//设置显示
button->move(50,100);//设置位置
button->setFixedSize(200,200);
//设置按钮父对象
button->setParent(this);

//新建按钮-方式2
QPushButton *btn2 =new QPushButton("第二个按钮",this);
btn2->move(0,50);
}

Widget::~Widget()//析构函数,可理解为内存回收
{
}

本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。