AkiraZheng's Time.

QT编程经验

Word count: 1.8kReading time: 7 min
2023/03/18

一、小经验

1.1 组件复制

  • 在进行组件复制时,需要先把准备复制到的地方取消布局才能进行复制

1.2 tableview

  • 在设计table内容时,为了方便后续修改表格,需要设计表格的model为QStandardItemModel*,后面对表格的修改都在model中进行,而不直接对table进行操作(QComBobox页也同理)

1.3 stacked的布局以及自适应缩放

  • stack中各个界面整体不能单独布局,需要对stack进行统一布局
  • 要实现自适应缩放需要把控件进行布局,同时如果缩放效果不符合预想可以通过修改Layout里面的layoutstretch的比值就可以实现

1.4 sql

1.4.1 QT驱动sql

  • QT操作的前提:使用者能自己通过SQL语句实现数据库表数据的增删改查

    • 本地MySql的配置参考文章:https://subingwen.cn/qt/sql-driver/ & https://www.cnblogs.com/ShineLeBlog/p/14908927.html
      • 在根据教程配置时需要注意.pro文件中添加INCLUDE等三个路径时,如果有路径中有空格需要在路径中添加双引号
      • 还需要注意如果出现文件缺失错误,大概率是配置路径有问题,在添加双引号后先执行qmake然后在构建,参考https://blog.csdn.net/hhhuang1991/article/details/84060977
      • LIBS += “D:\Project\Wireless_communication_software\mysql_v8.0.32\MySQL Server 8.0\lib\libmysql.lib”
      • INCLUDEPATH += “D:\Project\Wireless_communication_software\mysql_v8.0.32\MySQL Server 8.0\include”
      • DEPENDPATH += “D:\Project\Wireless_communication_software\mysql_v8.0.32\MySQL Server 8.0\include”
  • 需要先将sql添加到.pro文件中:QT += sql

  • qt提供的数据库类:

      • QSqlDatabase:通过这个类增/删/复制/关闭数据库,配置数据库信息
      • QSqlQuery:提供增删查改功能
    • QSqlRecord:数据库记录
    • QSqlField:数据类型、列名等
    • QSqlQueryModel:遍历结果集的高级接口(模型视图结构,一般大型才需要)
      • QSqlError:数据操作失败可以通过这个类获取错误信息

1.4.2 安装navicat

参考:(NavicatPremium16破解)[https://www.cnblogs.com/kkdaj/p/16260681.html]

1.4.3 sql事务操作-数据回滚

  • 在进行增、删、更新操作时需要添加事务操作来保护数据

1.4.4 sqlite使用

1.4.5 QT驱动sql出现问题

  • 参考https://www.jianshu.com/p/6efaf46fec75 & https://subingwen.cn/qt/sql-driver
  • D:\Project\Wireless_communication_software\QT_v5.12.6\Qt\Qt5.12.6\5.12.6\mingw73_64\plugins\sqldrivers路径中找不到qsqlmysql.dllqsqlmysql.dll文件,因此需要想办法编译
  • D:\Project\Wireless_communication_software\QT_v5.12.6\Qt\Qt5.12.6\5.12.6\Src\qtbase\src\plugins\sqldrivers\mysql目录下找到mysql.pro双击打开

1.5 QT实现web界面交互

1.6 QT利用sql的用户登录界面

1.7 QT利用生成pri文件

参考:https://zhuanlan.zhihu.com/p/489685702

  • 先在工程的文件夹中创建一个新的文件夹

  • 在新的文件夹中创建一个txt文件,并将名字后缀改成pri

  • 在工程的.pro文件下添加pri对应的文件夹地址信息

  • .pri文件中添加需要加入的自定义类文件的地址信息

二、QT配置

2.1 QT中配置MSVC环境

2.2 QT组件添加

三、QT打包EXE可执行文件

参考:https://blog.csdn.net/ColinFhz/article/details/107879769

  • 1.打开Qt5.12.6(MinGW...),如我的电脑是在搜索栏中点击Qt5.12.6(MinGW 7.3.0 64-bit)
  • 2.将QT Creator运行得到的.exe文件复制到一个空文件夹中
  • 3.在Qt5.12.6(MinGW...)打开的cmd控制台中cd到第2步中的文件夹处
  • 4.输入windeployqt text.exe自动打包,其中text自己改成对应的文件名称就行

四、QT云服务器中部署websocket通信

1. 云服务器配置-选用阿里云

  • 注意:新用户有三个月免费使用的优惠

  • 注意:学生用完三个月优惠后可以申请一个月学生免费试用优惠

  • 参考阿里云服务器建立公网物联网服务器

    • 其中添加端口步骤是给公网映射一个端口,这样就可以通过公网IP+端口号访问到服务器了,除了安全组里面的端口号外,其它PC是无法通过公网IP访问到服务器的。这里可以测试,在服务器上监听服务器内网的安全组端口号,此时其它PC可以通过公网IP+端口号与服务器通信;若服务器监听的是非安全组的端口号,则其它PC无法通过公网IP+端口号与服务器通信。
  • 云服务器上部署服务端,实际上就是在云本机的内网IP上开放端口号,通过地址映射关系将公网IP与内网IP对应起来,这样就可以通过公网IP访问到云服务器了。

2. sqlite加密设置

将下面四个文件拷贝到QT下载路径下对于编译器的sql驱动文件夹中,比如我的是\QT\Qt5.12.6\5.12.6\mingw73_64\plugins\sqldrivers,然后在QT的.pro文件中添加sqlcipher库。

  • libsqlcipher.a
  • libsqlcipher.a
  • sqlcipher.dll
  • sqlcipherd.dll

3. openssl配置

参考:https://blog.csdn.net/byzzw/article/details/118390933

CATALOG
  1. 一、小经验
    1. 1.1 组件复制
    2. 1.2 tableview
    3. 1.3 stacked的布局以及自适应缩放
    4. 1.4 sql
      1. 1.4.1 QT驱动sql
      2. 1.4.2 安装navicat
      3. 1.4.3 sql事务操作-数据回滚
      4. 1.4.4 sqlite使用
      5. 1.4.5 QT驱动sql出现问题
    5. 1.5 QT实现web界面交互
    6. 1.6 QT利用sql的用户登录界面
    7. 1.7 QT利用生成pri文件
  2. 二、QT配置
    1. 2.1 QT中配置MSVC环境
    2. 2.2 QT组件添加
  3. 三、QT打包EXE可执行文件
  4. 四、QT云服务器中部署websocket通信
    1. 1. 云服务器配置-选用阿里云
    2. 2. sqlite加密设置
    3. 3. openssl配置