• 10941阅读
  • 7回复

关于在QThread中用QTimer想主线程发送signal的问题 [复制链接]

上一主题 下一主题
离线tangooricha
 

只看楼主 倒序阅读 楼主  发表于: 2008-12-07
— 本帖被 XChinux 从 General Qt Programming 移动到本区(2011-01-02) —
我写了一个程序是关于QThread的使用。主要是在一个QThread对象的run中创建一个QTimer,然后将timeout与GUI中的一个槽函数连接,槽函数的作用是递增一个int值然后显示在一个QLineEdit中。但是我的程序可以创建新线程而int值却不会增加,QLineEdit的Text也不会变化,是怎么回事?
附件: QtThreadTest.7z (2 K) 下载次数:45
离线water_wf

只看该作者 1楼 发表于: 2008-12-07
先程中exec是啥,它有没有自己的消息循环看样子这个线程一开始就结束了
离线tangooricha

只看该作者 2楼 发表于: 2008-12-07
引用第1楼water_wf于2008-12-07 22:20发表的  :
先程中exec是啥,它有没有自己的消息循环看样子这个线程一开始就结束了

exec就是那个事件循环。
离线snailbing

只看该作者 3楼 发表于: 2008-12-08
qt中信号是用阻塞的方式实现的,使用的信号和槽都是用exec的主线程来运行的,如果你真的想用多线程的并行方式,那么用qthread来显现的声明多个线程来跳,或者用线程池
离线tangooricha

只看该作者 4楼 发表于: 2008-12-08
引用第3楼snailbing于2008-12-08 10:12发表的  :
qt中信号是用阻塞的方式实现的,使用的信号和槽都是用exec的主线程来运行的,如果你真的想用多线程的并行方式,那么用qthread来显现的声明多个线程来跳,或者用线程池

我只是想搞个线程向GUI发送一个timeout信号,可是GUI就是收不到这个信号。
和多线程并行没有关系。
离线tangooricha

只看该作者 5楼 发表于: 2008-12-09
就没人能帮忙解决么?
[ 此贴被tangooricha在2008-12-10 20:22重新编辑 ]
离线songxue3073
只看该作者 6楼 发表于: 2011-10-12
你的程序中new QTimer和启动QTimer不在一个线程中,启动失败。我修改了一下,看看这个符合你的要求吗?
QtThreadTest QtThreadTest.rar (1204 K) 下载次数:52
离线lbz12721
只看该作者 7楼 发表于: 2012-01-17
虽然看不懂。但是还是帮顶个。。
快速回复
限100 字节
 
上一个 下一个