• 5945阅读
  • 5回复

多线程中无法用while(1) [复制链接]

上一主题 下一主题
离线demoxie
 
只看楼主 倒序阅读 楼主  发表于: 2010-12-20
— 本帖被 XChinux 执行加亮操作(2011-01-28) —
请教高手,我在多线程中使用while(1),结果窗口始终无法出现,把它改为for()后,就正常了。
请问我的错误在哪?该如何写。
谢谢。

#include "thread1.h"
Thread1::Thread1(QObject *parent,QLabel *label):QThread(parent)
{
        l=label;
        count=0;
        char str[10];
        while(1){
                count++;
                sprintf(str,"%d",count);
                l->setText(str);
        }
}
void Thread1::run()
{
        exec();
}
离线demoxie
只看该作者 1楼 发表于: 2010-12-20
不好意思,我说错了。当我改为for()得时候,当for执行完后,窗口才出现。只有用connect (timeout()),时,窗口才能第一时间出现。
郁闷啊。
离线demoxie
只看该作者 2楼 发表于: 2010-12-20
在linux的多线程中是可以这样做的。为何在qt中就不行了啊。郁闷啊
离线zzz945
只看该作者 3楼 发表于: 2010-12-20
你怎么把while(1)放进构造函数里啦,  当然主线程会冻结
离线spitbreak
只看该作者 4楼 发表于: 2011-01-23
循环跳出条件呢???
离线XChinux

只看该作者 5楼 发表于: 2011-01-28
QThread在的run()函数里的东西才会在新线程中执行。构造函数中的那些东西是你在创建这个线程对象的那个线程里执行的。
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
快速回复
限100 字节
 
上一个 下一个