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