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 после того, как он показан, окно исчезнет, и вам нужно снова показать () его сразу после. Кроме этого это работает.