QT Creator上位机学习(一)基本类别及主体框架解析

本文介绍了Qt编程的基础知识,包括多种项目类型如QtWidgetsApplication、QtQuickApplication等,以及三种基类QMainWindow、QWidget和QDialog的用途。文章详细讲解了文件管理结构,如头文件、源文件和UI设计文件,并阐述了编译过程。此外,还讨论了信号与槽机制、Action设计和主程序的实现,提供了创建和管理Qt项目的基本指导。

系列文章目录



前言

之前也学习制作过串口上位机和利用Qchart完成数据的曲线显示等等,但大多只是对网上的程序进行拼接,这次又需要做一个上位机,打算好好学习记录一下。


基础认识

多种项目

可以创建多种项目:
1.Qt Widgets Application:支持桌面平台的GUI应用程序,C++。
2.Qt Console Application:无GUI界面,控制台应用程序,只需要简单的输入输出操作。
3.Qt Quick Application:创建Qt Quick2 应用程序,支持GUI,但是界面设计种应用的是QML语言,程序架构用C++,可以设计非常炫酷的界面,一般用在移动设备 或嵌入式设备上无边框的应用程序设计。
4.Qt Quick Controls 2 Application:创建基于Qt Quick Control2组件的可部署Qt Quick 2应用程序(Qt5.7版本以上)
5.Qt Canvas 3D Application:创建Qt Canvas 3D QML项目,支持3D画布,是QML项目。
在这里插入图片描述

3种基类

1.QMainWindow:主窗口类,具有主菜单栏、工具栏、状态栏
2.QWidget:可视化基类,支持各种界面组件
3.QDialog:对话框类,创建对话框界面
在这里插入图片描述
上图中勾选Generate form,就会自动创建ui文件,否则需要自己编程手动创建。

文件管理

一般分为头文件、源文件、UI设计文件。
在这里插入图片描述

Sources中,设计到所有的C++源文件,mainwindow.cpp是主窗口的实现文件,main.c是主函数文件,也是应用程序的入口。

Forms:项目内所有的.ui文件,目前这个是主窗口的界面文件,界面文件是文本文件,使用XML语言描述。(一般我们只管设计,不管内部的XML)

编译

在这里插入图片描述
如果勾选了Shawdow build,将在编译目录下创建一个编译后的文件目录,名字是编译器名称,便于区分是哪个编译器编译产生的。
如下图,下面是项目代码,上面是运行生成的编译后文件
在这里插入图片描述

在这里插入图片描述
直接运行程序:Crtl+R,Debug:F5,只编译不运行:Ctrl+B。

设置断点进行Debug有个前提,就是必须把模式设置成Debug模式。
在这里插入图片描述

项目程序

项目管理文件

.pro是项目管理文件,文件名就是项目名称
其中“QT += core gui”表示在项目中加入core gui模块,是用于GUI设计的类库模块。

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

表示当Qt版本大于4的时候,加入widgets模块

UI文件

在这里插入图片描述
在这里插入图片描述

信号与槽

在这里插入图片描述
可以使用可视化信号与槽进行创建,不过这种方式不会将信号与槽更新到代码中。(这种方法的connect在编译生成的ui_xxxxx.h文件中,自动添加的)

Action设计

在这里插入图片描述
在上图界面新建action,可以达到下图的效果:(然后将之添加到菜单的分组下就行)
在这里插入图片描述

在这里插入图片描述
当然之后还需要将Action的trigger()信号与想要实现功能的槽函数进行连接,编写槽函数功能,当然Action也有enable等属性可以设置。

主程序

在这里插入图片描述
主程序的功能是创建应用程序、创建窗口、显示窗口、运行应用程序,开始循环消息和事件处理。

1.首先QApplication 是Qt的一个标准应用程序类,a就是应用程序对象了

 	QApplication a(argc, argv);

2.Widget是设计窗口的类名,定义此窗口后就可以调用show显示了

	MainWindow w;
	w.show();

3.a.exec()启动应用程序,开始应用程序的消息循环和事件处理

    return a.exec();

窗体头文件

在这里插入图片描述

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>

QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

private:
    Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H

1.通过namespace声明了一个名称为Ui的命名空间,包含了描述界面组件的类MainWindow,这个类和文件中定义的类没关系。这个类是用来描述界面组件的,外部类型声明。后面应用时会这样写:Ui::MainWindow。
2.定义MainWindow类,继承了QMainWindow,使用宏Q_OBJECT是信号与槽必须要加的一个宏。(添加这个宏,就能对Qt特有的一些功能进行预处理,转化为C++)
在这里插入图片描述
3.public里面定义的是构造函数和析构函数。
构造函数是类的初始化,将数据成员初始化操作,函数名和类名一样,无返回值。
当一个对象的生命周期结束的时候,将自动调用析构函数来销毁对象的所有成员,函数不能有返回值,也没有形参。
在这里插入图片描述

4.private里定义的指针 ,用前面的namespace Ui里面类定义的,ui指针指向的是可视化设计的界面,一些界面的组件都要通过这个ui。
在这里插入图片描述

窗体源文件

在这里插入图片描述

#include "mainwindow.h"
#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
}

MainWindow::~MainWindow()
{
    delete ui;
}

1.Qt编译生成的与UI文件(mainwindow.ui)对应的类定义文件

#include "mainwindow.h"

2.执行父类QMainWindow的构造函数,创建一个Ui::MainWindow(前面namespace里面的)类对象ui,这个就是前面private里面定义的指针变量ui。(:后面是成员的定义),后面处理的时候都是这个ui指针。

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
}

toon过执行Ui::MainWindow类的setupUi() ,实现窗口的生成与各种属性的设置、信号与槽的关联。

3.析构函数删除new创建的指针ui

MainWindow::~MainWindow()
{
    delete ui;
}
### 使用 Qt Creator 开发上位机应用程序 #### 环境搭建 为了顺利使用 Qt Creator 进行上位机开发,需先完成环境配置。访问 Qt 官方网站并下载在线安装器[^2]。务必按照指引完成注册流程以确保获得开源许可资格。 #### 创建新项目 启动 Qt Creator 后,在欢迎界面选择 **New Project** 来创建个新的 Qt Widgets Application 或者其他适合类型的项目。这步骤为后续编码提供了必要的框架结构。 #### 添加串口通信支持 对于涉及硬件交互的应用场景,比如连接 Arduino 设备,则需要引入 `QtSerialPort` 模块来实现串口通讯功能。可以在 `.pro` 文件中加入如下语句以便于编译时自动链接该模块: ```qmake QT += serialport ``` #### 编写代码逻辑 下面是个简单的例子展示如何读取来自串口的数据并将结果显示到界面上: ```cpp #include <QCoreApplication> #include <QSerialPort> #include <QSerialPortInfo> #include <QDebug> int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); foreach (const QSerialPortInfo &info, QSerialPortInfo::availablePorts()) { qDebug() << "Name : " << info.portName(); qDebug() << "Description : " << info.description(); qDebug() << "Manufacturer: " << info.manufacturer(); } return a.exec(); } ``` 此段代码遍历所有可用的串口号,并打印其名称、描述以及制造商信息至控制台窗口[^3]。 #### 用户界面设计 利用 Qt Designer 工具可以快速构建直观易用的操作面板。拖拽按钮、标签等控件放置在主窗体之上;随后关联信号槽机制使得图形化组件能够响应用户的操作事件,进而触发后台业务处理函数执行特定任务。 #### 测试与部署 最后阶段是对整个应用进行全面测试验证稳定性及功能性无误之后再考虑发布事宜。针对不同操作系统平台打包成独立可执行文件分发给最终使用者运行。
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值