Плавающий / Всегда над диалогом - PullRequest
0 голосов
/ 02 мая 2011

Я заметил в GIMP, что при открытии диалога он не отключает родительское окно.Родительское окно все еще можно использовать, а дочернее окно плавает перед ним.Я хочу сделать то же самое, но когда я нажимаю на родительское окно, оно толкает детей назад, так что родитель выходит вперед.

Я использую Qt QDialog, но счастливчтобы сделать специфичный для платформы код, чтобы заставить это работать.

Я искал здесь: http://msdn.microsoft.com/en-us/library/ff700543(v=vs.85).aspx

, но, кажется, ничто не делает то, что я ищу.В настоящее время у меня есть хитрое решение, в котором я устанавливаю окно на HWND_TOPMOST, когда мое приложение получает фокус, а затем отключаю его, когда оно теряет фокус, но это не идеально, так как окна сообщений помещаются позади этих самых верхних окон.то есть.

SetWindowPos(winId(), stayOnTop ? HWND_TOPMOST : HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOACTIVATE);

Ответы [ 2 ]

3 голосов
/ 03 мая 2011

Похоже, у меня не правильно настроены родительские функции в моем диалоге!Его нужно поместить в родительское диалоговое окно / главное окно, и тогда оно просто работает.

1 голос
/ 02 мая 2011

Вам необходимо позвонить setWindowFlags(), включая флаг Qt::WindowStaysOnTopHint.

...