在其他线程QT / C ++中调用方法

时间:2013-05-22 14:00:39

标签: c++ qt task

可能在同一个类的后台线程中调用方法吗?使用C ++ / QT而不使用c ++ 11。 或者反复不断地用5秒钟来运行foo2。

实施例

class MyClass
{
  public:
     void foo(...)
     {
        // in another thread run foo2
        foo2;
     }
  .
  .
  .
  protected:
     void foo2(...){}

}

感谢

1 个答案:

答案 0 :(得分:4)

要在单独的线程中运行某个函数,您可以使用QtConcurrent::run(我将其与QFutureWatcher一起使用)。要每隔5秒钟运行一次,请使用QElapsedTimer

QFuture<void> future = QtConcurrent::run(this, &MyClass::foo2, ...foo2 arguments);

http://qt-project.org/doc/qt-4.8/qtconcurrentrun.html#run或在此处查看https://stackoverflow.com/search?q=QtConcurrent%3A%3Arun

或者您可以继承QThread,使用您想要在线程中发生的内容重新实现run(),然后创建一个线程实例并在其上调用start()。