完成QT上位机(八)

一. 正式开始设计界面

这一章节我们将完成QT上位机的设计,如果有同学对QtCreater的使用不太熟悉的,可以参考下面的链接

Qt 快速入门系列教程 · Qt 快速入门系列教程 (gitbooks.io)https://wizardforcel.gitbooks.io/qt-beginning/content/

二. 数据库处理

在qtsql数据库中建立两个表,一个表用来保存各个传感器的数据,一个表用来保存对电机等装置进行控制的信息。

让控件融入进背景:

修改样式表

QMainWindow#MainWindow

{

border-image:url(:/new/prefix1/picture/pic/one.png);

}

复制代码
    //dbui->setStyleSheet("background-image: url(:/new/prefix1/picture/pic/one.png);");
复制代码
//    // 设置背景图片
复制代码
//    QString imagePath = ":/new/prefix1/picture/pic/one.png";
复制代码
//    QString styleSheet = QString("background-image: url(%1);"
复制代码
//                                 "background-repeat: no-repeat;"
复制代码
//                                 "background-position: center;")
复制代码
//                         .arg(imagePath);
复制代码
复制代码
//    dbui->setStyleSheet(styleSheet);
复制代码
    //w.setStyleSheet("background-image: url(:/new/prefix1/picture/pic/one.png);");

三. 摄像头功能

特别讲述QT的摄像头部分

在MySQL中,您可以使用BLOB类型来存储图像数据。BLOB是二进制大对象(Binary Large Object)的缩写,它可以用来存储大量的二进制数据,比如图像文件、音频文件或视频文件等。下面是创建包含图像字段的表的具体步骤和SQL语句。

步骤

  1. 创建数据库:

    • 如果您还没有创建数据库,首先需要创建一个。
  2. 创建表:

    • 创建一个包含BLOB类型的字段来存储图像数据的表。
  3. 插入数据:

    • 插入图像数据到表中。

数据刷新

1. 使用定时器

导致UI卡顿

2. 使用QtConcurrent

QtConcurrent库提供了线程池,可以将任务异步提交给线程池执行,而不会阻塞GUI线程。

QMainWindow中使用QtConcurrent模块执行异步任务可以帮助你避免UI卡顿,同时充分利用多核处理器的优势。下面是一个具体的示例,展示了如何在QMainWindow中使用QtConcurrent::run来执行一个异步任务,并在任务完成后更新UI。

但后来发现在QtConcurrent中使用Qt的SQL模块(QtSql)进行MySQL数据库查询时遇到错误,通常是因为SQL查询或数据库操作不能在非主线程中执行。QtSql的数据库API并不是线程安全的,也就是说,所有的数据库操作应该在同一个线程中进行,通常是主线程。

  1. 所以还是直接采用定时器

把查询从六次查询减少的一次,并且0.5秒进行一次定时中断就不卡顿了

三. 遇到的问题

要使用表格必须添加

复制代码
QT_CHARTS_USE_NAMESPACE

1. 运行后,工具栏出现两个,导致按钮按下触发两次

首先查看是否真有两个工具栏

复制代码
qDebug() << "Number of toolbars:" << w.findChildren<QToolBar*>().count();

运行后,发现toolbar 的数量为2,说明重复出现了一个toolbar ,但是我们在.ui文件中设计的时候只添加了一个toolbar

最终放弃使用Designer添加工具栏,而是直接用代码中添加ToolBar并且添加动作

相关推荐
春时似衿里3 分钟前
【Navicat 连接MySQL时出现错误1251:客户端不支持服务器请求的身份验证协议;请考虑升级MySQL客户端】
服务器·数据库·mysql
Q741_1477 分钟前
优选算法 力扣 611. 有效三角形的个数 双指针降低时间复杂度 贪心策略 C++题解 每日一题
c++·算法·leetcode·贪心·双指针
帅帅梓9 分钟前
Linux lvm逻辑卷管理
linux·运维·数据库
科大饭桶14 分钟前
Linux系统编程Day5 -- Vim工具的使用
linux·运维·服务器·c语言·c++
Noii.19 分钟前
Mybatis的应用及部分特性
java·数据库·mybatis
Warren9823 分钟前
Java异常讲解
java·开发语言·前端·javascript·vue.js·ecmascript·es6
阿巴~阿巴~41 分钟前
面向对象编程基础:类的实例化与对象内存模型详解
开发语言·c++
汤永红44 分钟前
[2401MT-F] 青藤静掩的愁闷
c++·算法·信睡奥赛
JIngJaneIL1 小时前
家常菜点餐|基于java和小程序的家庭大厨家常菜点餐系统设计与实现(源码+数据库+文档)
java·数据库·小程序·vue·论文·毕设·家常菜点餐系统
爱吃土豆的马铃薯ㅤㅤㅤㅤㅤㅤㅤㅤㅤ1 小时前
dbeaver导入数据及配置讲解
数据库·dbeaver