On 2018-03-02 15:21, Elvis Stansvik wrote:
2018-03-02 16:18 GMT+01:00 Elvis Stansvik <elvst...@gmail.com>:
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.
I should clarify this: What I mean is that I've seen situations when
window()->windowHandle() is 0 here, even if the widget is constructed
with a full parentage up to a top-level widget.
Hi,
Call QWidget::create() on your top-level constructor, and it will ensure
it it has a QWindow
Regards,
--
Sérgio Martins | sergio.mart...@kdab.com | Senior Software Engineer
Klarälvdalens Datakonsult AB, a KDAB Group company
Tel: Sweden (HQ) +46-563-540090, USA +1-866-777-KDAB(5322)
KDAB - The Qt, C++ and OpenGL Experts
_______________________________________________
Interest mailing list
Interest@qt-project.org
http://lists.qt-project.org/mailman/listinfo/interest