Chcę przenieść kod głównej aplikacji Qt wraz z 2 linijkami do tworzenia i wyświetlania prostego okienka do oddzielnej klasy. Po tej czynności program się uruchamia i "trwa" jak by było otwarte okienko ale żadne okienko się nie pokazuję.
To jest kod głównego pliku main.cpp
generowanego przez każdy nowy projekt okienkowy po dodaniu własnej klasy:
#include "mainwindow.h"
#include <QApplication>
class MyEngine : public QApplication {
public:
MyEngine(int& argc, char* argv[]): QApplication(argc, argv) {}
void showMainWindow() {
MainWindow w;
w.show();
}
virtual ~MyEngine();
};
int main(int argc, char *argv[]) {
// QApplication a(argc, argv);
// MainWindow w;
// w.show();
// return a.exec();
MyEngine engine(argc, argv);
engine.showMainWindow();
return engine.exec();
}
MyEngine::~MyEngine() {}
Jedynie co zrobiłem od razu po wygenerowaniu nowego projektu to dodałem własną klasę i przeniosłem to co chciałem. To co jest zakomentowane to są oryginalne linijki które były w tym pliku tuż po wygenerowaniu projektu. Jak widać klasa jest prosta jak konstrukcja cepa.
Jedna uwaga: destruktor jest wirtualny i jawnie zdefiniowany poza klasą MyEngine
choć nic twórczego nie robi, gdyż w przeciwnym wypadku pojawia się ostrzeżenie:
'MyEngine' has no out-of-line virtual method definitions; its vtable will be emitted in every translation unit
zatem wybór padł na destruktor choć oczywiście mogłem tak samo postąpić z metodą showMainWindow()
;)
Pozostałych plików również wygenerowanych nie pokazuję żeby nie zaciemniać, gdyż nic w nich nie zmieniam.
I pytanie jest takie: Dlatego okienko się nie pokazuje choć program się uruchamia i nie kończy działania? I jak to poprawić, żeby się pokazało.