Qt 多线程跨线程调用函数:使用信号和槽机制
可以使用信号和槽机制来实现跨线程调用函数,不必使用 'reinterpret_cast' 和函数指针的方式。可以将 'updataState()' 定义为一个槽函数,然后在另一个文件中通过信号连接的方式来调用该槽函数。
具体步骤如下:
- 在 'MainWindow' 类中定义一个信号,用于触发 'updataState()' 函数。
signals:
void sigUpdataState();
- 将 'updataState()' 函数定义为一个槽函数。
private slots:
void updataState();
- 在 'updataState()' 函数中发射 'sigUpdataState()' 信号。
void MainWindow::updataState(){
qDebug() << '123';
//发送修改状态的信号
emit sigUpdataState();
}
- 在另一个文件中,在需要调用 'updataState()' 函数的地方,先获取到 'MainWindow' 的指针(可以通过构造函数或者公共接口来实现),然后将 'sigUpdataState()' 信号连接到该指针的 'updataState()' 槽函数上。
// 获取 MainWindow 的指针
MainWindow* mainWindow = ...;
// 连接信号和槽函数
QObject::connect(sender, &Sender::sigTrigger, mainWindow, &MainWindow::sigUpdataState);
这样就可以通过信号和槽机制来实现跨线程调用函数,而不必使用函数指针和 'reinterpret_cast'。同时,通过将 'updataState()' 定义为槽函数,也可以很方便地在多个文件中访问 'MainWindow' 的成员变量和函数。
原文地址: https://www.cveoy.top/t/topic/nwCT 著作权归作者所有。请勿转载和采集!