• 4628阅读
  • 5回复

有关线程问题,急!! [复制链接]

上一主题 下一主题
离线tinglan
 

只看楼主 倒序阅读 楼主  发表于: 2008-10-29
— 本帖被 XChinux 执行加亮操作(2008-11-02) —
        我想要在主界面上通过信号/槽来改变state的值,传递给我的线程,在我的线程中,通过判断state的值激发线程中的信号。
我的程序如下:
在主界面中定义一个静态函数:static bool state;
 初始化为bool qt_test::state = true;
Ssignal_shibu()是我的槽函数
void qt_test::Ssignal_shibu()
{
    if(radioButton1-> isChecked ())
    {
        qt_test::state=true;
    }
    if(radioButton1_2-> isChecked ())
    {
        qt_test::state=false;
    }
}
线程代码如下:
void mythread::run()
{
    if(qt_test::state==true)
    {
        signal_Sshibu->activate();
    }
    if(qt_test::state==false)
    {
        signal_Sshibu_huifu->activate();
    }
}
但实际线程只是停留在bool qt_test::state=true;的初始化值,点击radioButton1或radioButton1_2并没有将变化的state值传递给我的线程,为什么?
离线cahwxy

只看该作者 1楼 发表于: 2008-10-29
使用关键字 volatile
或者直接向线程发送消息
离线tinglan

只看该作者 2楼 发表于: 2008-10-29
引用第1楼cahwxy于2008-10-29 14:52发表的  :
使用关键字 volatile
或者直接向线程发送消息

先谢过楼上的,不过我还是不明白,能否具体点?
我用的是QT3。
离线ljp1205
只看该作者 3楼 发表于: 2008-10-29
是否可以把state设置成全局的呢 ?
离线fanzhichao

只看该作者 4楼 发表于: 2008-10-29
你的void mythread::run()执行的并不是一个无限循环,执行一次就没了
离线tinglan

只看该作者 5楼 发表于: 2008-10-30
引用第4楼fanzhichao于2008-10-29 17:11发表的  :
你的void mythread::run()执行的并不是一个无限循环,执行一次就没了

谢谢楼上了,确实是这个原因!
快速回复
限100 字节
 
上一个 下一个