2015-09-26 157 views
0

我有一个qt程序。它有一些类,在定义了继承自QWidget的类的全局变量后,部署失败。我该怎么办? 错误如下所示。申请结束退出代码134

QWidget的:必须构造一个QApplication的一个QWidget
之前 的bash:线1:2230中止DISPLAY = ':0.0'/程序路径
应用程序完成后,退出代码134

+1

如果您可以提供您的源代码,这将是有帮助的。 ;-) – Valinho

回答

1
作为

它是从错误消息看出:

必须之前一个QWidget

构建的QApplication

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对象。