开发中常用模块

Qt多线程、网络socket、数据库、串口通信、文件IO(Json, XML)、数据可视化...

Qt多线程

QT有两种实现多线程的方法,一种是“子类化QThread,然后去重写run函数,实现多线程”。一种是“子类化QObject,然后使用moveToThread函数实现多线程”。QT官方推荐使用第二种方法。

Qt使用多线程注意事项:

  • 主界面UI控件类不能放入子线程中
  • 当需要在子线程中执行网络Socket相关操作时,注意不能在主线程中初始化Socket
  • 多线程之间可以依靠信号与槽实现信息传递
  • Blog Image
    点击查看Qt多线程的使用教程

    网络socket

    QTcpSocket继承自QAbstractSocket,与QUdpSocket传输的数据报不同的是,QTcpSocket传输的是连续的数据流,尤其适合连续的数据传输。TCP一般分为客户端和服务端,即C/S (Client/Server模型)。
    QTcpSocket代表了两个独立的数据流,一个用来读取数据,一个用来写入数据,分别采用QTcpSocket::read()及QTcpSocket::write()操作,读取数据前先调用QTcpSocket::bytesAvailable来确定已有足够的数据可用。
    QTcpServer处理客户端的连接,可通过QTcpServer::listen()监听客户端发来的连接请求,每当有客户端连接时会发射newConnection()信号,QTcpSocket可用于读取客户端发来的数据报,亦可发送数据报。

    Blog Image

    CMake中使用的参数代表指CMakeLists.txt文件所在的目录。这个CMakeLists.txt文件控制了整个编译的过程。为了使用别的编辑器或者Qt 项目有跨平台的需求时,使用 CMake 构建更为方便。

    点击查看Qt网络Socket使用教程

    Qt使用MySQL

    QT内置了很多常用数据库驱动,如 sqlite, odbc和psql等,但mysql驱动需要自己手动编译,Qt提供了编译Mysql的代码,位置在D:\Qt\5.15.2\Src\qtbase\src\plugins\sqldrivers\mysql

    Blog Image

    MySQL驱动编译完成以后将编译好的qsqlmysql.dll/qsqlmysqld.dll放入文件夹D:\Qt\5.15.2\msvc2019_64\plugins\sqldrivers中,注意对应的编译器版本。将mysql安装目录下...\bin\中的ilbmysql.lib和libmysql.dll复制到Qt的bin目录下

    Blog Image

    在项目中使用MySQL,建议将sql模块放入独立线程中执行,且将sql类封装成单例模式,以便全局调用。

    Blog Image
    点击查看Qt连接MySQL详细教程

    串口通信

    Qt串口模块是Qt框架中的一部分,它提供了一种用于串口通信的API。通过Qt串口模块,我们可以轻松地实现串口通信,并进行数据的读取和写入。

    Blog Image
    点击查看Qt串口通信官方文档

    数据可视化QCustomPlot

    QCustomPlot是一个小型的qt画图标类,效果可以,易用,只需要在项目中加入头文件qcustomplot.h和qcustomplot.cpp文件,然后使一个widget提升为QCustomPlot类,即可使用。   QCustomPlot 可以导出为各种格式,如矢量化 PDF 文件和光栅化图像,如 PNG、JPG 和 BMP。QCustomPlot 是在应用程序内显示实时数据以及为其他媒体生成高质量绘图的解决方案。

    Blog Image
    点击查看QCustomPlot使用方法