As это видно из сообщения об ошибке:
должны построить QApplication перед QWidget
Ваш глобальный унаследованный от 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
.
было бы полезно, если бы вы могли предоставить исходный код. ;-) – Valinho