QT6开发笔记 开发环境w11系统Qt Creator 18.0.0C的类概念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.exeqt一般安装只会装常用的东西需要自己去添加更多的组件开发起来就需要很多组件资源qt在工程里面添加资源QT serialport哪里知道qt有什么资源文件添加完整的QT组件之后在安装目录下看到所有的文件资源的文件夹serialport包含其中E:\Qt\6.9.3\Src例程代码获取1、除了众所周知的进入软件选择例程2、在QT安装目录下也会有例程代码本人路径 E:\Qt\ExamplesQT6无法执行到信号和槽函数QT6好像不支持SIGNAL SLOTconnect(ui-pushButton_OpenUsart,QPushButton::clicked,this,Widget:: serial_pro_switch );二维数组定义动态定义2维数组2行10列int row 2, col 10; QVectorQVectorint array(row, QVectorint(col));生成的是变量会在函数退出的时候释放掉QVectorint* ptrArray array[0];指针用法写入元素方式QVectoruint8_t *data (*data)[2] 42; // 写入第三个元素索引2指针申请二维数组内存new方式需要自己去释放内存// 使用new动态分配二维数组 QVectorQVectoruint8_t* p_array new QVectorQVectoruint8_t( total_array_big_hang_number, QVectoruint8_t(IAP_MAX_FREAM_LEN) ); // 获取第三行的地址索引为2 QVectoruint8_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_castuint8_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 | ----------------------------------------------------------------关键差异字段大端模式小端模式a0x00000x0000b0x0001高字节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再将左下角的图标改成releaserelease发布的程序无法执行参考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\test1cd C:\Users\18722\Desktop\test13、输入第三条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 选择背景颜色