#c #winapi #qt #dialog #x11
#c #winapi #qt #диалог #x11
Вопрос:
Я заметил в GIMP, что при открытии диалогового окна родительское окно не отключается. Родительское окно все еще можно использовать, в то время как дочернее окно плавает перед ним. Я хочу сделать то же самое, однако для меня, когда я нажимаю на свое родительское окно, оно отодвигает дочерние элементы назад, так что родительский элемент выходит вперед.
Я использую Qt QDialog, но рад выполнить код, зависящий от платформы, чтобы заставить это работать.
Я искал здесь:http://msdn.microsoft.com/en-us/library/ff700543 (v = против 85).aspx
но, похоже, ничто не делает того, что мне нужно. В настоящее время у меня есть хитроумное решение, в котором я устанавливаю окно на HWND_TOPMOST
, когда мое приложение получает фокус, затем отключаю это, когда оно теряет фокус, но это не идеально, поскольку окна сообщений перемещаются за большинство верхних окон. ie.
SetWindowPos(winId(), stayOnTop ? HWND_TOPMOST : HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOACTIVATE);
Ответ №1:
Похоже, у меня неправильно настроено родительское управление в моем диалоговом окне! Его нужно было создать в родительском диалоговом окне / главном окне, и тогда он просто заработает.
Ответ №2:
Вам нужно вызвать, setWindowFlags()
включая Qt::WindowStaysOnTopHint
флаг.
Комментарии:
1. Но это сохраняет его поверх всех окон. Я просто хочу сохранить его поверх родительского. Как обсуждается здесь: qtcentre.org/threads/15464-WindowStaysOnTopHint
2. Да, я вас неправильно понял. Я просто предположил, что ваше воспитание было правильным, потому что раз это так, то, как вы говорите, больше нечего делать.