2018-03-02 15:54 GMT+01:00 Nikos Chantziaras <rea...@gmail.com>: > On 02/03/18 16:37, Elvis Stansvik wrote: >> >> [...] >> How can I (as application developer) get notified of screen changes of >> non-QWindow-backed widgets? > > > There seems to be two ways to do this. One is using one of the QScreen > signals: > > http://doc.qt.io/qt-5/qscreen.html
Hm, I should have made my question more clear. The typical way I've seen is to connect to the screenChanged signal of the closest ancestral QWindow (window()->windowHandle()). But, I've found that it's not reliable for certain widgets/certain platforms to do e.g: QTimer::singleShot(0, [this]() { connect(window()->windowHandle(), &QWindow::screenChanged, this, &MyWidget::handleScreenChanged); }); in my constructor, because depending on how the widget is constructed, the parentage up to a top-level window may not have been established yet, even if I do it in a single-shot timer like this. So, what I should probably be doing is something like: bool MyWidget::eventFilter(QObject *object, QEvent *event) { if (event->type() == QEvent::ScreenChangeInternal || event->type() == QEvent::WindowChangeInternal) { if (window() && window()->windowHandle()) { // Window or screen changed, and there is an ancestral // QWindow I can use, for example to get the QScreen // to look at it's DPI et.c. } } return ParentClass::eventFilter(object, event); } But then I'm relying on internal events (QEvent::ScreenChangeInternal and QEvent::WindowChangeInternal). > > However, another one seems to be using QDesktopWidget signals: > > http://doc.qt.io/qt-5/qdesktopwidget.html > > QApplication has static functions to get the current QDesktopWidget, the > current QScreen primary screen and all screens. It also has signals to get > notified of screen changes. AFAIK that only gives me the primary screen, and notification about when the primary screen changes, not the screen my widget is on or notifications when that changes. Elvis > > > _______________________________________________ > Interest mailing list > Interest@qt-project.org > http://lists.qt-project.org/mailman/listinfo/interest _______________________________________________ Interest mailing list Interest@qt-project.org http://lists.qt-project.org/mailman/listinfo/interest