QApplication w odrębnej klasie i już program przestaje działać (okienko się nie pokazuje)

0

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.

2

po wykonaniu metody showMainWindow zmienna wychodzi za zakres i okno jest niszczone jednocześnie zamykane, ustaw tą zmienną/okno jako składową klasy...

0

@zegarek84: faktycznie :) Teraz działa. Dzięki

1 użytkowników online, w tym zalogowanych: 0, gości: 1