Как сделать так, чтобы немодальный диалог оставался поверх своего родителя в Solaris CDE

StackOverflow https://stackoverflow.com/questions/1754866

  •  20-09-2019
  •  | 
  •  

Вопрос

У меня проблема с немодальным диалогом Qt на компьютере Solaris 8/10 с использованием CDE (Common Desktop Environment).

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

Обратите внимание, что это поведение относится только к CDE. Открытая среда Windows или среда Solaris Java не вызывают этой проблемы.

Мой вопрос: как я могу сделать его всегда поверх родительского (основного приложения)?

Я попытался передать флаг WX11BypassWM в диалоговое окно, чтобы обойти оконный менеджер, но затем граница и рамка исчезли, из-за чего диалоговое окно невозможно перетащить/переместить.

Обновление 1:

В отношении к Ответ Энди:

я пробовал Qt::WStyle_StaysOnTop, но это не работает.

Я также попробовал объединить:

WX11BypassWM | WStyle_StaysOnTop | WStyle_Title

и другие комбинации WStyle_DialogBorder, WType_TopLevel и т. д., он останется наверху только в том случае, если WX11BypassWM передается.

Но всякий раз, когда WX11BypassWM передается, отображаемое диалоговое окно не будет иметь ни рамки, ни заголовка.

Это означает, что это неподвижный, безмолвный диалог.

Обновление 2:

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

По крайней мере, это позволит пользователю перемещаться по обоим интерфейсам.

Если у кого-нибудь есть лучшее предложение, дайте мне знать.

Нет правильного решения

Другие советы

Я не уверен, что понял ваш вопрос, но нельзя ли было бы использовать:

Найдено в QtAssistant:

enum Qt::WindowType
flags Qt::WindowFlags

Qt::WindowStaysOnTopHint :

«Сообщает оконной системе, что окно должно оставаться поверх всех остальных окон».

Надеюсь, это немного поможет!

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top