[Interest] QWindow::setTransientParent fails on windows

Roland Winklmeier roland.m.winklmeier at gmail.com
Wed Sep 25 18:34:25 CEST 2013


Hi there,

I'm currently struggling with QWindow::setTransientParent on a windows
platform. I have two different windows and want to set one as the child of
the other. Using QWindow::setParent() was not successful, because it was
embedded into the parent (I got the parent QWindow* by calling fromWinID() )

If I call QWindow::setTransientParent(parent), nothing changes. I have two
different entries in the taskbar instead of one and both windows are still
parentless.
After looking into the code in the windows platform plugin, I found out
that the following method is called in qwindowswindow.cpp:

void QWindowsWindow::updateTransientParent() const.

This method sets the parent by setting GWL_HWNDPARENT. But MSDN explicitly
said, you should NOT do it this way:

"You must not call SetWindowLong with the GWL_HWNDPARENT index to change
the parent of a child window. Instead, use the SetParent function. "
Source:
http://msdn.microsoft.com/en-us/library/windows/desktop/ms633591%28v=vs.85%29.aspx

So I assume this should be changed in the windows platform plugin to be a
real parent? Are there any other options to set the parent without
embedding it?

Cheers
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.qt-project.org/pipermail/interest/attachments/20130925/f615215b/attachment.html>


More information about the Interest mailing list