QT上位机编写

本文作者分享了使用QT CREATOR开发设备管理上位机的心得,涉及多线程、数据库操作、网络套接字和界面交互。在多线程交互中,通过共享变量和互斥锁实现通信;窗口操作必须在主线程进行,利用信号槽机制解决次线程中弹出对话框的问题;遇到的运行时错误通常与内存访问有关;数据库表名不能以数字开头且限制数字字母混合;网络连接时设置定时器避免长时间等待;QtableModel+QTableView组合能大幅提升查询效率。
摘要由CSDN通过智能技术生成

      前段时间终于把设备管理上位机完成的差不多了,用了差不多有半个月的时间了,因为对QT还不是特别的熟悉,所以中间还是摸索QT的过程。这个上位机程序用到了多线程,数据库操作,网络套接字还有一些界面操作。使用的IDE我选用的是QT CREATOR,个人觉得还是很好用的,里面集成了QT DESIGNER,QT HELP,,QT DEBUG(虽然暂时我还没用过调试器,都是使用Qdebug打印信息和QMesseageBox输出对话框来调试的),QT CREATOR编辑环境也是相当不错的,特别是自动补全功能,呵呵不用记那么多类了,还有对类和函数或对象F1可以看到帮助文档,但是有个前提就是这个类的头文件你必须声明正确,而却你的对象函数也必须写正确了,否则就看不到文档了。在编写过程也碰到了很多问题,现在就回忆一遍吧。

 

问题1:在多线程的编写中,我们都知道run()里面的函数对象都是在新线程中运行的,那么新线程怎么和老线程交互。

答案:编写多线程类的时候,我们把需要和主线程交互的对象放在线程类中,这样在主线程类中定义一个线程类对象,这样主线程可以访问这个线程类的对象,当然如果是直接访问,那就要这个对象是PUBLIC的了,如果不是就要通过线程类对象函数了。同时run因为是线程类的成员函数,那么他也可以访问同一个对象的成员。所以线程类对象的这个成员变量就相当于多线程的共享变量了,所以我们要互斥访问,我们可以在线程类里面定义一个锁。

 

问题2:窗口操作只能运行于主线程(可能原因为窗口需要QApplication的支持,而QApplication是定义在主线程中的,窗口运行在主事件循环中,而次线程

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值