0
我有一個qt程序。它有一些類,在定義了繼承自QWidget
的類的全局變量後,部署失敗。我該怎麼辦? 錯誤如下所示。申請結束退出代碼134
QWidget的:必須構造一個QApplication的一個QWidget
之前 的bash:線1:2230中止DISPLAY = ':0.0'/程序路徑
應用程序完成後,退出代碼134
我有一個qt程序。它有一些類,在定義了繼承自QWidget
的類的全局變量後,部署失敗。我該怎麼辦? 錯誤如下所示。申請結束退出代碼134
QWidget的:必須構造一個QApplication的一個QWidget
之前 的bash:線1:2230中止DISPLAY = ':0.0'/程序路徑
應用程序完成後,退出代碼134
它是從錯誤消息看出:
構建的QApplication必須之前一個QWidget
從QWidget
繼承的全局是在main
函數之前構造的。
擁有這樣的全球化是一個壞主意。
但是,如果你真的想獲得樂趣,你可以嘗試某種單例,或者至少把該靜態變量放入getter函數中,以確保該對象僅在第一次訪問期間被實例化。您還應該確保第一次訪問是在main()
中實例化後的QApplication
之後。經典的Qt Widget應用程序模板可能如下所示:
MainWindow& getGlobalMainWindow()
{
static MainWindow w;
return w;
}
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
getGlobalMainWindow().show();
//...
}
但是這確實是一個壞主意。在上面的示例中MainWindow
(及其子部件)在QApplication
後銷燬。如果某些析構函數依賴於QApplication
這將是一個問題。
因此,最好的解決方案是避免全局QWidget
對象。
如果您可以提供您的源代碼,這將是有幫助的。 ;-) – Valinho