如果你选择在 Windows 上开发 Qt 应用,官方推荐的方式是动态编译的(即下载一个 exe 的安装应用程序,然后一直安装就行了),这种方式最后在发布最后的应用程序的时候会有一大堆的 dll 动态链接库,打包发给需要使用的人的时候不太方便(也可以使用加壳软件,比如 Engima Virtual Box,但是360等 电脑管家会认为加壳后的 exe 文件这是病毒,目前我也没有找到解决办法,欢迎大家补充)。静态编译则是下载 Qt 源码,在自己的电脑上编译,这个过程很漫长(我用自己的笔记本电脑 I5 处理器,编译 5.12 版本的 Qt 大概用了20 个小时),但是在使用的时候发现报错了(同样的代码使用动态编译没问题,静态编译报错),这肯定是某些地方的配置有问题,和 Qt 没关系。据说使用静态编译的方法,最后生成的 release 版本,一个单独的 exe 文件便可以在所有的电脑上运行,只是文件相对比较大。
从官网下载对应版本的安装包进行安装即可,安装的过程中会让你选择组件。
MinGW :选中,这是在 windows 上面开发会用的一个工具,类似于 cmd 控制台。
MSVC:如果你选择使用 VS2017(以后或许有更新的版本,或者是之前的版本)作为你的集成开发环境的话,勾选一个适合你自己电脑版本的就行了。
Strawberry :树莓派应用开发工具。
Qt Creator :选中,这是Qt Creator集成开发环境。
所有以 Qt 开头的组件都勾选上。
Qt Creator 是官方推荐的集成开发环境,导入所有的库没有任何问题,只是即使你已经选择了MinGW,还是会无响应,出现的次数不多,这应该是bug。必须要注销或者重启电脑后再次打开即可。VS2017不会无响应,但是在导入一些库的时候很麻烦,比如 QSerialPort ,各种百度导入进去后效果还是不好,总是有各种稀奇古怪的错误。所以,个人推荐使用 Qt Creator,而且相对来说网上的解决办法更多。
我的开发环境:Win10,Qt Creator集成开发环境,Qt 版本5.12。(动态编译)
开发串口调试助手第一件事就是要在工程的 .pro 文件夹下添加:
QT += serialport
官方文档: https://doc.qt.io/qt-5/qtserialport-index.html
QSerialPort: https://doc.qt.io/qt-5/qserialport.html
QSerialPortInfo:https://doc.qt.io/qt-5/qserialportinfo.html
Qt 所有的库:https://doc.qt.io/qt-5/classes.html
1、打开项目中的 .ui 文件拖动编辑(具体控件的用法从上面的库中找)。
2、如果最终生产界面可以随着拖动边框而发生变化,请设置最外层布局为栅格布局。(我的界面)
3、最开始采用C++代码设计页面,使用垂直布局和水平布局相互嵌套,但是无效。现在我认为失效的原因是我没有设置顶层窗口的布局方式。如果需要设计应用界面的大小可以随着顶层窗口的改变而改变,设置顶层布局为栅格布局。
4、合理设置每个控件的 SizePolicy 才能达到理想的效果。在 Qt designer 中单击需要更属性的控件,右侧会出现属性栏,直接在里面设置即可。
5、个人认为使用 Qt designer 布局比手写代码布局更方便,直观。
1、关于串口的启动过程,在 QSerialPort 这个类中有很详尽的描述:
(1)、通过 QSerialPortInfo 这个类获取可用的串口号
(2)、给串口设置串口号
(3)、打开串口开关
(4)、配置串口传输信息(设置波特率等)
(5)、完成上述配置便可以通过串口收发数据了
2、实时更新可用串口
主要涉及到实时获取外接串口设备的连接情况,并实时更新。下面是我用的一个方法,此方法需要使用 QTimer 开启定时器实时刷新,需要和定时器信号连接。
//更新串口号
void MainWindow::UpdateSerialPortNumber(){
QList infos = QSerialPortInfo::availablePorts();
if(infos.isEmpty())
{
ui->cb_serial_port_number->clear();
ui->cb_serial_port_number->addItem("暂无可用串口");
return;
}
foreach (QSerialPortInfo info, infos) {
my_serial_port_->setPortName(info.portName());
ui->cb_serial_port_number->clear();
ui->cb_serial_port_number->addItem(info.portName() + " Serial");
}
}
3、设置传输方式等很简单,不再赘述。
1、设置构建方式为release。运行或者重新构建都可以。
2、找到 release 版本的存储目录,将 项目.exe 拷贝至一个单独的文件夹。
3、打开 MinGW,使用命令切换到含有 项目.exe 的文件夹中。
4、使用如下命令,会在当前文件夹中生成执行此应用所需的全部 .dll 文件。
windeployqt XXX.exe
5、拷贝此文件夹至任意电脑,双击项目的 exe 文件,即可打开此项目。
下载地址:https://github.com/Chamico/QT-Serial-Port-Debugging-Assisant
官方文档是最权威学习途径。