首页| 论坛| 消息

标题:关于线程的问题~
作者:aoxuehan
日期:2009-10-21 14:16
内容:

我在UI中定义2个类:
class myThread : public QThread
class Project_Ui : public QMainWindow,public Ui::Project_UiClass
myThread中重写了run方法。
下面这个类里有个myThread的变量。
然后在下面类的一个函数中调用start():
void Project_Ui::speek()
{
    std::string sTemp;
    tSpeek.start();
}
不行。出错。我就跟踪调试。
但是我发现t.Speek.start()之后,调试没有进入myThread的run方法。(我知道java中,start之后,不会马上进入run方法。而是会接着执行下面的代码,下面的代码执行完之后,才执行run)之后进入了sTemp的析构函数xstring。然后继续调试跟踪,进入了moc_Project_Ui.cpp(Project_Ui即是我的类)中的:
    if (_c == QMetaObject::InvokeMetaMethod) {
        switch (_id) {
        case 0: on_listView_clicked((*reinterpret_cast< const QModelIndex(*)>(_a[1]))); break;
        case 1: openFile(); break;
        case 2: saveFile(); break;
        case 3: copy(); break;
        case 4: setFont(); break;
        case 5: setColor(); break;
        case 6: about(); break;
        case 7: speek(); break;
        case 8: test(); break;
        default: ;
        }
函数,到了case7 ,然后break。然后再下一步调试,弹出出错。there is no sources code available***。。
怎么会这样啊??


#1 [aoxuehan 10-21 14:42]
我刚刚随便写了个小程序。
就以个按钮。
点击一个按钮,然后就调用start(),调试发现。同样错误,没有进入run函数中,而是弹出错误。
#2 [rqzrqh 10-21 18:18]
没有这个槽??
#3 [aoxuehan 10-21 18:26]
有啊~:
connect(pushButton,SIGNAL(clicked()),this,SLOT(speek()));

回复 发表
主题 版块