我有一个静态函数:
static void lancerServeur(std::atomic<bool>& boolServer)
,这个函数必须是静态的,因为我在一个线程中启动它,但由于这个原因,我无法在这个函数中发出信号。以下是我尝试做的事情:void MainWindow::lancerServeur(std::atomic<bool>& boolServer){
serveur s;
StructureSupervision::T_StructureSupervision* bufferStructureRecu;
while(boolServer){
bufferStructureRecu = s.receiveDataUDP();
if(bufferStructureRecu->SystemData._statutGroundFlight != 0){
emit this->signal_TrameRecu(bufferStructureRecu);//IMPOSSIBLE TO DO
}
}
}
有没有一种方法可以发射我的信号?
谢谢。
QObject
移动到线程中是最后一步,前提是其他事情已经正常工作,并且是为了减少延迟。线程安全的方法不需要是静态的。它们只需要是线程安全的或者是槽函数,然后您可以通过invokeMethod
或信号槽连接安全地从驻留在线程中的QObject
调用这些槽函数。 - Kuba hasn't forgotten Monica