我有一个qt程序。它有一些类,在我定义了一个继承自QWidget
的类的全局变量之后,deploy变得不成功。我该怎么办?
错误如下所示。
QWidget:必须在QWidget之前构建QApplication bash:第1行:2230 Aborted DISPLAY =':0.0' /程序路径
应用程序以退出代码134完成。
答案 0 :(得分:1)
从错误消息中可以看出:
必须在QWidget之前构建QApplication
继承自QWidget
的全局是在main
函数之前构建的。
拥有这样的全球性是一个坏主意。
但是,如果你真的想玩得开心,可以尝试某种单例或者至少将该静态变量放入getter函数中,以确保只在第一次访问时实例化对象。您还应该确保第一次访问是在QApplication
main()
实例化后进行的。经典的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
个对象。