Qt - Kolejność wykonywanych lini kodu.

0

cześć. mam taki kod:

ka::ka(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::ka)
{
 ui->setupUi(this);

    QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8"));
    QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"));
    QTextCodec::setCodecForLocale(QTextCodec::codecForName("UTF-8"));

    go();
    
}

chciałbym aby ui programu pokazywało się najpierw więc dałem ui->setupUi(this); na jako pierwszą funkcję wykonywaną w kodzie.
jednak pierwsza wykonuje się funkcja go();
chcę aby funkcja go(); rozpoczęła swoją pracę zaraz po włączeniu ui. proszę o pomoc
z góry dzięki :)

0

A nie tak:

QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8"));
    QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"));
    QTextCodec::setCodecForLocale(QTextCodec::codecForName("UTF-8"));
 ui->setupUi(this);
 
    go();
  • przebuduj projekt
0

niestety nie udało się.
funkcja go nadal wykonuje się przed pojawieniem się okienka z programem

0

Ponieważ wykonanie się konstruktora nie oznacza że okienko pojawiło się na ekranie.

0

Bo w klasie jest budowane okno. Wyswietlanie jest w mainie, gdzie utworzony jest obiekt MainWindow i wywolana metoda show.

0

czyli co mam zrobić żeby funkcja wykonała się po pojawieniu się okienka ?

0

Przenieść jej wywołanie za linię z kodem odpowiedzialnym za wyświetlenie okna.

0

Przecież funkcja go() jest wywoływana z konstruktora, czyli zanim jeszcze obiekt na dobre powstanie. Odpal funkcję za pomocą timera.

0

Zrób z go() slota i go uruchom timerem po jakimś opóźnieniu.

QTimer::singleShot(300, this, SLOT(go()));

Tak jak piszą koledzy, w konstruktorze budowana jest struktura danych. Dopiero, gdy ma wystartować główny event loop okno jest pokazywane.
Poza tym może wystarczy jak poczytasz to: http://qt-project.org/doc/qt-4.8/QSplashScreen.html

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