我开始在Qt中学习C ++ 11标准中的线程。我不能包含库,没有这样的目录例如,我有以下简单的代码:
#include <QCoreApplication>
#include <thread>
#include <iostream>
using namespace std;
void func();
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
MyThread th1;
th1.run();
return a.exec();
}
void func()
{
cout << "This string from thread!"<<endl;
}
在代码的第二个字符串上,我有一个错误。编译器没有“看到”,我知道我必须“包含”11标准,所以我去.pro并粘贴CONFIG + = c ++ 11,但它没有帮助我:C 拜托,我需要你的帮助!
答案 0 :(得分:3)
您尝试使用QThread
子类,但您说要使用C++11
thread
,请使用此命令:
#include <thread>
#include <QDebug>
#include <QApplication>
#include <iostream>
void foo()
{
std::cout << "This string from thread!"<<endl;
//while(true)
//{
// qDebug() <<"works";
// Sleep(500);
//}
}
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
std::thread t(foo);
t.join();
return a.exec();
}
接下来是错的:
MyThread th1;
th1.run();
应该是:
MyThread th1;
th1.start();
有关使用Qt类进行线程处理的详细信息:
http://blog.qt.digia.com/blog/2010/06/17/youre-doing-it-wrong/