我有一個靜態函數: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
}
}
}
有沒有辦法發出我的信號?
謝謝。
我非常害怕你在圈子裏運行,爲單一問題分層逐步更復雜和複雜的解決方案。首先,Qt中的聯網應用程序應該被設計成可以*很好地*使用* no *線程。將'QObject'移動到線程是本來工作之後的最後一步,並且是爲了減少延遲而完成的。線程安全的方法不需要是靜態的。它們只需要線程安全或插槽,然後就可以安全地從駐留在線程中的'QObject'調用槽(通過'invokeMethod'或通過信號槽連接)。 –
也許你應該提出一個問題,要求一個規範的解決方案,無論你的基本問題是什麼。這樣的問題可能會吸引一個完整的,規範的,即應該開始的答案類型。爲了使問題成爲話題,您應該描述您嘗試過的方式以及您遇到的問題。 –
嘿@KubaOber嗯,我開始使用你的方法,但經過3天的研究,我找不到問題,所以我必須繼續改變,所以我必須使用winsocks ...我同意你的觀點可能會變得更加複雜,但我有結果表明,就像你知道我是一名實習生一樣,而且我的層次結構中沒有很多考慮因素,所以如果我不繼續,我會被解僱。無論如何,我有一個適當的結果,現在可行,也許不是最好的,但它的工作。 –