2014-02-26 74 views
0

我想在我的共享庫中的某個方法中調用QMessageBox,但是當我嘗試這樣做時,我得到「QWidget:必須在QWidget之前構造一個QApplication」。但是我無法在我的共享庫中構建QApplication,那麼我該如何解決這個問題?在DLL中使用QT小部件

+0

通常,您需要實例化一個QApplication實例,然後調用exec()來運行GUI UI線程(主事件循環)。這聽起來像一個類似於這個http://stackoverflow.com/questions/2150488/using-a-qt-based-dll-in-a-non-qt-應用程序的副本。這個問題的答案有點老了(2010),所以你必須用Qt 5.xx.xx做更多的研究,並且超越 – Huy

+0

爲什麼你不能在你的庫中構造QApplication? –

+0

@DmitrySazonov:庫不應該(通常)具有QApplication上下文,因爲它們通常包含在QApplication上下文中。 –

回答

0

我想說,避免在共享庫內創建QMessageBox(或任何GUI小部件),因爲它會削弱目的,如果您將該庫用於非GUI應用程序,該怎麼辦?

我經常使用共享庫的解決方案是使用信號/插槽系統,然後允許QApplication管理如何在屏幕上顯示結果,因此發出信號並將其連接到您的內部插槽顯示QMessageBox的應用程序。