Qt中的C ++线程连接

时间:2014-11-02 17:52:12

标签: c++ qt c++11 boost-thread

我开始在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 拜托,我需要你的帮助!

1 个答案:

答案 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/

http://qt-project.org/doc/qt-5/thread-basics.html

http://qt-project.org/doc/qt-5/qtconcurrent-index.html