应用程序以退出代码134完成

时间:2015-09-26 12:01:29

标签: qt

我有一个qt程序。它有一些类,在我定义了一个继承自QWidget的类的全局变量之后,deploy变得不成功。我该怎么办? 错误如下所示。

  

QWidget:必须在QWidget之前构建QApplication   bash:第1行:2230 Aborted DISPLAY =':0.0' /程序路径
  应用程序以退出代码134完成。

1 个答案:

答案 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个对象。