PyQt4: Как я могу переключить поведение "Оставайся сверху"?

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

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

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

благодарю вас

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

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

4 ответа

Решение

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

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

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

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

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

Это очистит это:

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

Это позволит это:

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

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

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

Вы хотите Qt::WindowStaysOnTopHint Подсказка, см. Пример оконных флагов.

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

Другие вопросы по тегам