Jak wykrywać zmiany głównego okna aplikacji Qt

0

Dzień doby,
mam pytanko o wykrywanie zmiany rozmiaru okna w aplikacji. Znalazłem gdzieś informację że można to zrobić przy pomocy timera sprawdzając rozmiar okna i zmieniając to co się chcę, jednak wydaje mi się to słabe rozwiązanie, przez większość czasu nie będzie żadnych zmian a timer będzie niepotrzebnie chodził.Czy jest jakiś inny sposób? Np. wykrywać jakoś zmianę rozmiaru okna? jakiś sygnał ?

Dziękuje za pomoc : )

Szczęśliwego Nowego Roku !

1

Z tego co widzę nie ma takiego sygnału, ale za pomocą QObject::installEventFilter() możesz podglądać resize eventy dla Twojego main window.

Lekko zmodyfikowany kod z dokumentacji:

bool FilterObject::eventFilter(QObject *object, QEvent *event)
{
    if (object == target && event->type() == QEvent::Resize) {
        auto e = static_cast<QResizeEvent *>(event);
        qDebug() << e->size() << e->oldSize();
    }
    return false;
}
0

Dziękuję to działa ! Czy to działa w taki sposób że po zainstalowaniu i nadpisaniu funkcji bool FilterObject::eventFilter(QObject *object, QEvent *event) wykrywa wszystkie eventy dla okna, a warunkiem event->type() == QEvent::Resize wybiera się interesujący nas event ? : )

0

Tak bym to rozumiał.

0

Dziękuję : )

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