读书人

error C2668: “QThread:start”: 对重

发布时间: 2013-01-27 13:55:24 作者: rapoo

error C2668: “QThread::start”: 对重载函数的调用不明确

#include <iostream>
#include <QThread>
#include <QString>

class MyThread : public QThread
{
Q_OBJECT
public:
MyThread(QString name = "") {
stopped = false;
this->name = name;
}

void run() {
while (!stopped) {
std::cout << "In " << name.toStdString() << "'s run()." << std::endl;
QThread::msleep(400);
}
}

void stop() {
stopped = true;
}

private:
volatile bool stopped;
QString name;
};

int main()
{
MyThread thread;
MyThread thread1("Thread1");
MyThread thread2("Thread2");
//
thread.start();
thread1.start();
thread2.start();
return 0;
}

哪里错了?望高手指点。
[解决办法]
多写几个文件,把你的程序分成三个文件,main.cpp,mythread.h,mythread.cpp
还有mythread的构造函数,建议用QtCreator生成类(基于qobject),改一下(qobject => qthread)就可以用了。
[解决办法]
Q_OBJECT使用的类不要放到cpp中,要单独的.h文件,moc才能正确解析。
[解决办法]
引用:
我把它们放在不同的文件中,还是不行啊!
具体的代码如下:
C/C++ code
#include <QCoreApplication>
#include <QThread>
#include "MyThread.h"

int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
MyThread th……

你看,把Q_OBJECT都丢掉了。

读书人网 >QT开发

热点推荐