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

标签 c++ qt task

是否可以在同一个类的后台线程中调用方法?在没有 c++11 的情况下使用 C++/QT。 或者每隔 5 秒重复运行 foo2。

例子

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

}

谢谢

最佳答案

要在单独的线程中运行某些函数,您可以使用 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()。

关于c++ - 在其他线程QT/C++中调用方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16693804/

相关文章:

c++ - 二维数组定义

c++ - 将加密字符串存储在变量中

C++ 或 Python 作为 GUI 编程的起点?

c++ - Qt + conan = 使用空输出设备,没有可用的

c# - Task.Run a void 方法和 Task 方法返回 null 有区别吗?

c++ - 采用 "pass by reference"值的递归函数的包装函数

qt - 其中 'index'属性被定义,因为Repeater用于实例化一个项目数组,每个项目都可以访问索引

c++ - 有没有办法防止工具栏的隐藏操作?

c# - 当一个方法使用缓存,但偶尔会做 I/O 时,它应该返回 T 还是 Task<T>?

linux - 在Linux调度器中,包含多个线程的不同进程如何获得公平的时间配额?