新浪微博
腾讯微博
会员列表
统计排行
基本信息
到访IP统计
管理团队
管理统计
在线会员
会员排行
版块排行
帖子排行
标签排行
帮助
下拉
用户名
电子邮箱
用户名
密 码
记住登录
登录
找回密码
注册
快捷通道
关闭
您还没有登录,快捷通道只有在登录后才能使用。
立即登录
还没有帐号? 赶紧
注册一个
首页
论坛
Qt下载
作品展
群组
个人中心
捐赠、管理与开发
邮件订阅
帖子
文章
日志
用户
版块
群组
帖子
搜索
QTCN开发网
>
Qt基础编程
>
在QRunnable发送信号到主线程【已解决】
发帖
回复
返回列表
新帖
12975
阅读
2
回复
在QRunnable发送信号到主线程【已解决】
[复制链接]
上一主题
下一主题
离线
daimon0316
UID:54579
注册时间
2008-07-25
最后登录
2013-04-27
在线时间
160小时
发帖
48
搜Ta的帖子
精华
0
金钱
478
威望
49
贡献值
0
好评度
48
访问TA的空间
加好友
用道具
新手上路
关闭
个人中心可以申请新版勋章哦
立即申请
知道了
加关注
发消息
只看楼主
倒序阅读
楼主
发表于: 2010-10-28
— 本帖被 XChinux 执行加亮操作(2010-10-29) —
关键词:
通讯
signal
QT4
线程
QRunnable
在
QRunnable
子类中显示提示信息,用到了
GUI
,查询资料发现GUI只能在主
线程
调用,就想通过QRunnable子类发送显示信号到主线程。但一直
编译
不通过,查资料发现QRunnable与其他QT类不同,并不是继承自QObject。而connect连接器的入参是要求一个QObject对象指针,想想应该是不能这样用的。但网上一些帖子说能够实现,例如:
http://www.qtcn.org/bbs/read.php?tid=23837&fpage=5&toread=&page=1
http://zhbtdy.blog.163.com/blog/static/29035121201091392839126/
如果能够实现,请大叫指点一下。如不能那么这种主线程和
其他
线程之间如何
通讯
?
代码如下:
1、线程类
头文件
复制代码
#ifndef MYBUSINESS_H
#define MYBUSINESS_H
#include <QRunnable>
class MyBusiness : public QRunnable
{
public:
MyBusiness();
void run();
signals:
void sendShowEmit(QString content);
};
#endif // MYBUSINESS_H
2、线程类cpp文件
复制代码
#include "mybusiness.h"
MyBusiness::MyBusiness()
{
}
MyBusiness::run()
{
emit sendShowEmit("MyBusiness::run emit.");
}
3、主程序部分相关代码
复制代码
void MainWindow::showContent(QString content)
{
_MessageShow(content);
}
void MainWindow::timer_thread_done()
{
//执行线程
MyBusiness* thread_bis = new MyBusiness();
connect(thread_bis,SIGNAL(sendShowEmit(QString)),this,SLOT(showContent(QString)));
QThreadPool::globalInstance()->start(thread_bis);
}
[ 此帖被daimon0316在2010-10-29 12:07重新编辑 ]
共
条评分
博客地址 http://blog.sina.com.cn/daimon0316
回复
举报
分享到
淘江湖
新浪
QQ微博
QQ空间
开心
人人
豆瓣
网易微博
百度
鲜果
白社会
飞信
离线
dbzhang800
UID:7394
注册时间
2006-06-03
最后登录
2024-03-25
在线时间
9892小时
发帖
5579
搜Ta的帖子
精华
2
金钱
56157
威望
5626
贡献值
20
好评度
5628
访问TA的空间
加好友
用道具
论坛版主
加关注
发消息
只看该作者
1楼
发表于: 2010-10-28
1. 因为 QRunnable 不是 QObject 的子类,所以它不能用信号和槽。你要坚信这一点。
至于别人能用信号和槽,只能说明他使用的多重继承。
不用信号的槽的话,你可以直接使用:
QMetaObject 的 invokeMethod
http://hi.baidu.com/cyclone/blog/item/1bf8033bbb7498e514cecb50.html
2. 既然要使用信号和槽的话,用QThread可能更合适一点(QRunnable 可能更适合运行大量的小任务)
http://hi.baidu.com/cyclone/blog/item/65f3f603294f2e783812bb51.html
共
条评分
回复
举报
离线
daimon0316
UID:54579
注册时间
2008-07-25
最后登录
2013-04-27
在线时间
160小时
发帖
48
搜Ta的帖子
精华
0
金钱
478
威望
49
贡献值
0
好评度
48
访问TA的空间
加好友
用道具
新手上路
加关注
发消息
只看该作者
2楼
发表于: 2010-10-29
回 1楼(dbzhang800) 的帖子
首先感谢你的回复。
我的业务稍微简单一些,已经通过其他方式解决了。我在程序内部建立了共享消息队列,在主线程中通过定时器取消息进行提示。
共
条评分
博客地址 http://blog.sina.com.cn/daimon0316
回复
举报
发帖
回复
返回列表
http://www.qtcn.org/bbs
访问内容超出本站范围,不能确定是否安全
继续访问
取消访问
快速回复
限100 字节
您目前还是游客,请
登录
或
注册
进入高级模式
文字颜色
发 布
回复后跳转到最后一页
上一个
下一个
关闭
补充发布信息
验证码:
发 布
隐藏
快速跳转
站务及资讯
网站公告
新闻资讯
Qt官方发布
网站管理
Qt应用及资源
Qt 作品展
Qt代码秀
Qt应用版
Qt技术讨论区
Qt安装与发布
Qt中文处理
Qt基础编程
Qt QML开发
Qt嵌入式开发
Qt移动平台开发
其它技术开发讨论区
Qt图书专区
《C++ GUI Qt 4编程》(第2版)专栏
《Qt高级编程》专栏
《零基础学Qt4编程》专栏
《Qt设计模式》(第2版) 图书专栏
Python Qt GUI快速编程
Qt项目开发区
天池项目
Qt开放平台开发库
Qt版百度云笔记
机械CAD
Qt文档计划
QTCN网站系统开发
扇贝词典
非活跃项目区
社区中心
帖子回收站(Trash)
招聘、求职、供求、广告等
休闲娱乐
关闭
关闭
选中
1
篇
全选