QT6开发笔记
2026/5/16 21:23:15 网站建设 项目流程

开发环境

w11系统

Qt Creator 18.0.0

C++的类概念

1、 一个类:有变量有方法

所以一个类包括cpp文件和h头文件

2、每次创建一个类对象,就会执行一次构造函数;

QT6新建新的类

为什么新建类会单独说明,因为这个会让初学者出错;避免浪费时间;不会出错

file->new file->文件和类 c/c++

使用新建的QT类调用UI

方法1:主窗口共有化ui成员

方法2:把新类的构造函数增加参传递

iap_file::iap_file(QWidget *parent,Ui::Widget *t_ui) : QWidget{parent} { connect(t_ui->iap_openFile,&QPushButton::clicked,this,&iap_file::open_iap_file); }

参1:父类是QWidget 参2:为ui类型指针

然后主QWidget新建类对象时候指定传递参数

#include "widget.h" #include "ui_bootload_widget.h" Widget::Widget(QWidget *parent) : QWidget(parent) , ui(new Ui::Widget) { ui->setupUi(this); m_iap_file =new iap_file(this,ui); }

仿真下使用qDebug()的程应用程序输出为乱码

工具-> 外部->配置->文本编辑器->inteface 找到选择uft8编码

工具-> 外部->配置->文本编辑器->环境 找到选择uft8编码

如上为常规解决方法:如果未能解决

电脑w11设置找到如下:更改系统环境设置

添加完整的QT组件

安装目录下打开:

MaintenanceTool.exe

qt一般安装只会装常用的东西;需要自己去添加更多的组件;开发起来就需要很多组件资源;

qt在工程里面添加资源

QT += serialport

哪里知道qt有什么资源文件

添加完整的QT组件之后:

在安装目录下看到所有的文件资源的文件夹,serialport包含其中:E:\Qt\6.9.3\Src

例程代码获取

1、除了众所周知的进入软件选择例程

2、在QT安装目录下也会有例程代码

本人路径 E:\Qt\Examples

QT6无法执行到信号和槽函数

QT6好像不支持:SIGNAL SLOT

connect(ui->pushButton_OpenUsart,&QPushButton::clicked,this,&Widget:: serial_pro_switch );

二维数组定义

动态定义2维数组

2行10列

int row = 2, col = 10; QVector<QVector<int>> array(row, QVector<int>(col));生成的是变量,会在函数退出的时候释放掉

QVector<int>* ptrArray= &array[0];指针用法

写入元素方式:

QVector<uint8_t> *data (*data)[2] = 42; // 写入第三个元素(索引2)

指针申请二维数组内存

new方式,需要自己去释放内存

// 使用new动态分配二维数组 QVector<QVector<uint8_t>>* p_array = new QVector<QVector<uint8_t>>( total_array_big_hang_number, QVector<uint8_t>(IAP_MAX_FREAM_LEN) ); // 获取第三行的地址(索引为2) QVector<uint8_t>* third_row = &(p_array->at(2));

QT数组

QByteArray *file_ByteArray ; QByteArray temp_sendData;//初始化的数组实际上无存储空间,不能使用data()
引用数组地址

file_ByteArray->data()

获取数组的首个元素 0号元素

file_ByteArray->data()[0]

插入另一个数组

在元素【5】的位置上插入“123456”

QByteArray temp_array("123456"); temp_sendData.insert(5,temp_array);
数组尾追加变量
temp_sendData.append(变量);

类型强制转换

reinterpret_cast<uint8_t *>(file_ByteArray->data()))

reinterpret_cast<目标类型>(当前需要转换的类源))

大小端区别

使用Q的时候

总会感觉结构体的成员顺序会随大小端而改变,其实不会

struct Example

{

char a; // 1字节

short b; // 2字节

int c; // 4字节

};

大端

+----------------+----------------+----------------+----------------+ | a | b高 | b低 | c高 | +----------------+----------------+----------------+----------------+ | 0x0000 | 0x0001 | 0x0002 | 0x0003 | +----------------+----------------+----------------+----------------+ | 1 | 2 | 3 | 4 | +----------------+----------------+----------------+----------------+

小端

+----------------+----------------+----------------+----------------+ | a | b低 | b高 | c低 | +----------------+----------------+----------------+----------------+ | 0x0000 | 0x0001 | 0x0002 | 0x0003 | +----------------+----------------+----------------+----------------+ | 1 | 2 | 3 | 4 | +----------------+----------------+----------------+----------------+

关键差异

字段大端模式小端模式
a0x00000x0000
b0x0001(高字节)
0x0002(低字节)
0x0001(低字节)
0x0002(高字节)
c0x0003(高字节)
...
0x0000(低字节)
0x0003(低字节)
...
0x0000(高字节)

结论:还是成员a在低字节

QT串口发送完成

未实践

使用 QByteArray data; serialPort->write(data); 写一个大缓存之后 定时检测如下; if (serialPort->bytesToWrite() == 0) { qDebug() << "发送完成(通过定时器检测)"; }

两个类之间调用

第一种

A类内,创建B类;A可以调用B,也可以传递A类给B;这样就耦合比较深

第二种

通过第三个类去协调两个类

第三种:

通过指针:分别指向各自的类;但是个人觉得也是第二种的延申

创建信号

就是在类的点H文件中增加一个函数声明,无须实体函数;

signals:
void big_row_complete();

emitbig_row_complete();//是发射信号

没有release模式(QT6)

再将左下角的图标改成release

release发布的程序无法执行

参考:

Qt6程序打包(如何解决Qt程序在其他电脑上无法运行的问题)_qt6打包程序-CSDN博客

找到windeployqt.exe

在安装目录搜索windeployqt.exe

将要发布的程序bootload_pc_app.exe(我的程序)和windeployqt.exe放在非中文文件夹下

文件夹目录C:\Users\18722\Desktop\test1

找到qt的命令窗口

1、英文输入法下输入cmd 如下

C:

2、跳转目录:cd C:\Users\18722\Desktop\test1

cd C:\Users\18722\Desktop\test1

3、输入第三条cmd windeployqt bootload_pc_app.exe

结束

QT6_UI设计——设置控件背景颜色/字体颜色

1、右击选择控件

2、选择背景

一定是选择下拉框;每次都会忘记,每次都出错;

color 颜色
background-color 背景颜色
alternate-background-color 交替背景颜色

border-color 边框颜色
border-top-color 边框顶端

border-right-color 边框右边

border-bottom-color 边框底部

border-left-color 边框左边

gridline-color 网格颜色

selection-color 选择颜色

selection-background-color 选择背景颜色

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询