Bring application to front - portable way
-
Hello forum!
First of all, here's my setup: Windows 7 - 64bits, Qt 5.2.0. (MSVC 2010, 32 bit), Qtcreator 3.0.0. Developped application based on QMainWindow.
I'm currently trying to figure out a Qt (portable) way of bringign my application back to front, when it receives a defined tcp message.(The tcp stuff works perfectly - yay!)
I know there are a few topics and answers around the internet and on QtForum, like this one:
Re: Bring window to front -> raise()
... but they're all old, and not working in my case.I've tried lots of things and combinations of
raise(), activatewindow(), setWindowFlags(), show()
and whatnot.
The only thing that partially worked wassetWindowFlags(windowFlags() ^ Qt::WindowStaysOnTopHint); show(); setWindowFlags(windowFlags() & ~Qt::WindowStaysOnTopHint); show();
or other ways of writing it but I hit a problem with that because the window stays on top, as if you couldn't remove
theQt::WindowStaysOnTopHint
flag.So the workaround I found was call native Win32 API:
SetWindowPos((HWND)winId(), HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE); SetWindowPos((HWND)winId(), HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE);
Then it works, my app is back to front, but not locked to front!
Kinda hacky you say? ... yes, and I dont't like it bc it's not portable.Anyone would have a Qt solution?
Thx for your time and neurons.