标题:关于线程的问题~
作者: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()));