QT有两种实现多线程的方法,一种是“子类化QThread,然后去重写run函数,实现多线程”。一种是“子类化QObject,然后使用moveToThread函数实现多线程”。QT官方推荐使用第二种方法。
Qt使用多线程注意事项:
QTcpSocket继承自QAbstractSocket,与QUdpSocket传输的数据报不同的是,QTcpSocket传输的是连续的数据流,尤其适合连续的数据传输。TCP一般分为客户端和服务端,即C/S (Client/Server模型)。
QTcpSocket代表了两个独立的数据流,一个用来读取数据,一个用来写入数据,分别采用QTcpSocket::read()及QTcpSocket::write()操作,读取数据前先调用QTcpSocket::bytesAvailable来确定已有足够的数据可用。
QTcpServer处理客户端的连接,可通过QTcpServer::listen()监听客户端发来的连接请求,每当有客户端连接时会发射newConnection()信号,QTcpSocket可用于读取客户端发来的数据报,亦可发送数据报。
CMake中使用的参数代表指CMakeLists.txt文件所在的目录。这个CMakeLists.txt文件控制了整个编译的过程。为了使用别的编辑器或者Qt 项目有跨平台的需求时,使用 CMake 构建更为方便。
QT内置了很多常用数据库驱动,如 sqlite, odbc和psql等,但mysql驱动需要自己手动编译,Qt提供了编译Mysql的代码,位置在D:\Qt\5.15.2\Src\qtbase\src\plugins\sqldrivers\mysql
MySQL驱动编译完成以后将编译好的qsqlmysql.dll/qsqlmysqld.dll放入文件夹D:\Qt\5.15.2\msvc2019_64\plugins\sqldrivers中,注意对应的编译器版本。将mysql安装目录下...\bin\中的ilbmysql.lib和libmysql.dll复制到Qt的bin目录下
在项目中使用MySQL,建议将sql模块放入独立线程中执行,且将sql类封装成单例模式,以便全局调用。
QCustomPlot是一个小型的qt画图标类,效果可以,易用,只需要在项目中加入头文件qcustomplot.h和qcustomplot.cpp文件,然后使一个widget提升为QCustomPlot类,即可使用。 QCustomPlot 可以导出为各种格式,如矢量化 PDF 文件和光栅化图像,如 PNG、JPG 和 BMP。QCustomPlot 是在应用程序内显示实时数据以及为其他媒体生成高质量绘图的解决方案。