PyQt4: Как я могу переключить поведение «Оставайся сверху»? - PullRequest
4 голосов
/ 31 января 2011

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

В PyQt4 легко создать окно, которое всегда будет оставаться сверху,Это описано здесь: PyQt: всегда сверху

Что я хочу иметь виджет (пункт меню, флажок и т. Д.), Который будет включать или отключать это поведение.До сих пор я не нашел способа восстановить исходное поведение.

спасибо

ОБНОВЛЕНИЕ После предложения Исмаила 'cartman' Dönmez я искал немного больше и нашел реализациюпримера WindowFlags в PyQt4.

Его можно найти здесь

Ответы [ 4 ]

13 голосов
/ 31 января 2011

Это должно отключить его:

window.setWindowFlags(window.windowFlags() & ~QtCore.Qt.WindowStaysOnTopHint)

Это должно включить его:

window.setWindowFlags(window.windowFlags() | QtCore.Qt.WindowStaysOnTopHint)
4 голосов
/ 08 октября 2015

рош это правильно.Но не забудьте включить window.show () после изменения флага.Ваше окно будет скрыто при смене флага.Я также включил код для переключения флага.

Это очистит его:

window.setWindowFlags (window.windowFlags () & ~ QtCore.Qt.WindowStaysOnTopHint)

Это включит его:

window.setWindowFlags (window.windowFlags () | QtCore.Qt.WindowStaysOnTopHint)

Это переключит его:

window.setWindowFlags (window.windowFlags () ^ QtCore.Qt.WindowStaysN

4 голосов
/ 31 января 2011

Требуется подсказка Qt::WindowStaysOnTopHint, см. Пример флагов окна .

1 голос
/ 05 ноября 2017

Я не могу комментировать ответ Роша , так что обратите внимание здесь - для PyQt 5.7 на Devuan, если вы установите флаг WindowStaysOnTopHint на QDialog после его отображения, окно исчезнет, ​​и вам нужночтобы показать () это снова сразу после.Кроме этого он работает.

...