完成QT上位机(八)

一. 正式开始设计界面

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

Qt 快速入门系列教程 · Qt 快速入门系列教程 (gitbooks.io)icon-default.png?t=N7T8https://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并不是线程安全的,也就是说,所有的数据库操作应该在同一个线程中进行,通常是主线程。

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

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

三. 遇到的问题

2.

要使用表格必须添加

QT_CHARTS_USE_NAMESPACE

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

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

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

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

 

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

  • 7
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Qt 是一款跨平台的应用程序开发框架,能够用于开发各种类型的软件。上位机是指控制系统中的一个部分,负责与低级控制设备通信,实现控制和监控功能。CAN(Controller Area Network)是一种广泛应用于汽车、工业控制等领域的通信协议。现在,我们来谈一谈 Qt 上位机与 CAN 的结合应用。 Qt 上位机可以通过使用相应的 CAN 接口库来实现与 CAN 总线的通信。Qt 提供了丰富的网络和串口通信功能,发送和接收 CAN 消息可以通过网络通信接口或串口通信接口来完成。通过 Qt 团队或第三方开发的CAN库,我们可以轻松地在 Qt 上位机中实现与 CAN 总线的通信。 使用 Qt 上位机进行 CAN 通信的好处之一是,Qt 的跨平台特性使得我们可以在各种操作系统上运行我们的上位机应用程序。不管是在 Windows、Linux 还是 macOS 等系统上,Qt 都能提供一致性的开发体验和运行结果。 Qt 提供了易于使用且强大的界面设计工具,可以帮助我们设计出直观而美观的用户界面,用于显示和控制 CAN 总线上的数据。通过 Qt 的信号槽机制,我们可以方便地实现对 CAN 数据的处理和分发,使得上位机能够实时地获取和更新来自 CAN 总线的数据。 总之,Qt 上位机的 CAN 应用可以支持用户与 CAN 总线之间的数据交互和通信,提供了易用、跨平台和强大的界面设计能力。这使得我们能够快速开发出功能丰富且可靠的上位机应用,用于实现各种控制和监控任务。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值