门户
书籍
教程
论坛
问答
下载
签到
个人空间
帐号
自动登录
找回密码
密码
登录
立即注册
账号
自动登录
找回密码
密码
登录
立即注册
请绘制轨迹完成人机验证
由vaptcha提供技术支持
登录
注册
搜索
搜索
搜索
热搜
qml
quick
串口
输入中文
数据库
arm
百度地图
qt聊天
QT安装
安装
多窗口
中文乱码
聊天
局域网
鼠标
QT
图片
乱码
rs485通讯
多线程
android
多文档编辑器
本版
用户
本版
用户
【HUX】问题互助平台
博客
动态
好友
帖子
收藏
道具
勋章
任务
淘帖
动态
日志
相册
分享
记录
留言板
群组
门户
导读
排行榜
设置
我的收藏
退出
Qt开源社区
›
精华区(请在“有问必答”发帖)
›
有问必答
›
程序调试
›
Qt子线程
发布主题
返回列表
Qt子线程
5
回复
6156
查看
[复制链接]
lxw111110
当前离线
积分
21
lxw111110
累计签到:1 天
连续签到:1 天
来源:
2019-3-26 14:25:51
显示全部楼层
|
阅读模式
1
Qter豆
在Qt 多线程编程中,有时有这样的需求:
我在ui上会有对数据库的增删查改操作,操作无论是否耗时,我都将它当作耗时操作处理,我希望这部分耗时操作可以由子线程完成。但是Qt的子线程run的设计,通常执行完毕后都是退出的(run函数执行到末尾),假如我将ui线程的增删查改动作用信号与槽的方式与子线程连接,那么,我如何将4种操作对应到一个run里?依靠子线程槽函数传递特殊的键值吗?亦或者子线程可否有类似消息队列的东西,可以阻塞,收到特定消息后解析再处理。请问遇到这样的情况我该用怎样的模式去开发!
最佳答案
一叶知秋
查看完整内容
moveToThread
回复
使用道具
举报
一叶知秋
当前离线
积分
1027
一叶知秋
累计签到:882 天
连续签到:3 天
2019-3-26 14:25:52
显示全部楼层
moveToThread
回复
使用道具
举报
Since
当前离线
积分
837
Since
累计签到:742 天
连续签到:1 天
2019-3-26 18:28:17
显示全部楼层
线程池 ?
回复
使用道具
举报
yongheng0852
当前离线
积分
214
yongheng0852
累计签到:181 天
连续签到:1 天
2019-4-1 07:06:23
显示全部楼层
我也刚学到这里,使用qt5的线程函数函数的话,可以写多个函数,但同时只能把一个函数作为线程函数而已,那么你在不同的操作可以使用信号和槽来指定你启动的是哪一个函数作为线程的处理函数!
回复
使用道具
举报
yongheng0852
当前离线
积分
214
yongheng0852
累计签到:181 天
连续签到:1 天
2019-4-1 07:08:43
显示全部楼层
如果需要说,子线程执行完了,再来做其他的数据操作的话,不知道可不可以在子线程对象中设置标志位,在主线程中检查这个标志位,如果执行完了true,则继续其他操作,返回结果也可以通过emit发射出去。。
回复
使用道具
举报
lxw111110
当前离线
积分
21
lxw111110
累计签到:1 天
连续签到:1 天
2019-4-10 17:16:49
显示全部楼层
这个事情最后是这么处理的,专门创建了一个应用程序类用来处理增删查改操作,Ui类创建应用类的对象,并将该对象movetothread,UI对象使用信号和槽的方式与应用对象交互,这样既满足我的需求,也很好的实现了逻辑界面分离。我个人觉得还是不错的解决方案。3楼回答的算是最贴近的,分虽不多,给3楼吧。其他楼的小伙伴们也非常感谢
回复
使用道具
举报
返回列表
发表新帖
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
公告
可以关注我们的微信公众号yafeilinux_friends获取最新动态,或者加入QQ会员群进行交流:190741849、186601429(已满)
我知道了