可以使用信号和槽机制来实现跨线程调用函数,不必使用 'reinterpret_cast' 和函数指针的方式。可以将 'updataState()' 定义为一个槽函数,然后在另一个文件中通过信号连接的方式来调用该槽函数。

具体步骤如下:

  1. 在 'MainWindow' 类中定义一个信号,用于触发 'updataState()' 函数。
signals:
    void sigUpdataState();
  1. 将 'updataState()' 函数定义为一个槽函数。
private slots:
    void updataState();
  1. 在 'updataState()' 函数中发射 'sigUpdataState()' 信号。
void MainWindow::updataState(){
    qDebug() << '123';
    //发送修改状态的信号
    emit sigUpdataState();
}
  1. 在另一个文件中,在需要调用 'updataState()' 函数的地方,先获取到 'MainWindow' 的指针(可以通过构造函数或者公共接口来实现),然后将 'sigUpdataState()' 信号连接到该指针的 'updataState()' 槽函数上。
// 获取 MainWindow 的指针
MainWindow* mainWindow = ...;

// 连接信号和槽函数
QObject::connect(sender, &Sender::sigTrigger, mainWindow, &MainWindow::sigUpdataState);

这样就可以通过信号和槽机制来实现跨线程调用函数,而不必使用函数指针和 'reinterpret_cast'。同时,通过将 'updataState()' 定义为槽函数,也可以很方便地在多个文件中访问 'MainWindow' 的成员变量和函数。

Qt 多线程跨线程调用函数:使用信号和槽机制

原文地址: https://www.cveoy.top/t/topic/nwCT 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录