我有2類:一個保持一定的循環(在執法機關2-3分鐘;並且從QObject的繼承)和另一示出了一個進程對話框(從QDialog的繼承)。 我想在顯示對話框後立即啓動循環。我的第一個解決方案是:如何從exec()調用純函數?
int DialogClass::exec()
{
QTimer::singleShot(0, LoopClassPointer, SLOT(start()));
return __super::exec();
}
從插槽拋出異常存在問題。所以我認爲有可能讓公衆插槽start()
只是一個公共職能。但現在我不知道如何使它運作良好。像這樣的事情:
int DialogClass::exec()
{
LoopClassPointer->start();
QApplication::processEvents();
return __super::exec();
}
沒有幫助。該對話框不會出現。 這種情況是否有共同的方法?
一些細節,根據問題:
我有一個與它自己的風格系統正常工作,所以我們有一個共同的做法建立任何對話框:從stytle類,它繼承了繼承他們來自QDialog。
我「LoopClassPointer」是從單獨的DLL導出類(在它裏面沒有UI支持)。
我在主應用程序的「啓動」按鈕,它具有狹槽,它創建進度對話框和「LoopClassPointer」相連。此時我在對話框中發送「LoopClassPointer」實例,並且不要在體系結構中進行重大更改。
是什麼__super意思?你是否試圖訪問由編譯器創建和保留的對象? –
不應該是其他方式嗎?進程啓動後應該立即顯示進度對話框? –
這些對象是否都在同一個線程中運行?在你的代碼中,你不清楚你想要做什麼。在不同的物體之間進行通信的方式是將信號連接到一個插槽。所以你會將obj1的某些信號連接到obj2中的一個插槽,並在它開始時從obj1發出信號......是你正在嘗試做什麼? –