c++ - 使用 Qt 以不同的方法线程化

标签 c++ multithreading qt

我有一个包含多个方法的类,我想在不同的线程中调用这些方法中的每一个。

class Base : public QThread
{
    copy();
    move();
    remove();
    etc();
    ....    
    ....
    run();
}

这是可能的还是我应该继承在其 run() 方法中实现功能的不同类? (这将导致几个派生类)

谢谢。

最佳答案

事实上,QThread::run()只是一个启动新线程的方法。只需从不同的线程调用方法,它们就会在那里执行。

根据设计:线程间通信通常围绕消息传递模型构建,Qt 的排队连接模式使其易于实现:您只需将方法设置为插槽,然后在 run() 中启动一个QMessageLoop 通过 exec() 方法:

class Base : public QThread
{
public slots:
    void copy();
    void move();
    void remove();
    void etc();

...

protected:
    void run()
    {
        exec();
    }
}

现在您可以通过信号调用您的方法,每个 Base 实例将在自己的线程中执行它们。

关于c++ - 使用 Qt 以不同的方法线程化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5928748/

相关文章:

c++ - 在 C++ 中设置 array1 = array2

c++ - 分析声音的库

c++ - 制作特殊组合 (C++)

qt - 使 QLabel 的像素图透明

c++ - 隐藏那些没有过滤文件的文件夹

c++ - 自定义类集的重载提取运算符

c# - 为什么这个任务会提前返回?我做错了什么吗?

java - 如何将多线程写入单个文本文件?

c# - GUI 对象何时需要调用?

qt - 如何在 Yocto Linux 中为 Qt5 应用程序启用 GLX 和 EGL 与 XCB 集成?