PyQt4: ¿Cómo puedo cambiar el comportamiento de “Mantenerse en la cima”?

Quiero crear una aplicación, donde el usuario decidirá que la ventana principal permanecerá siempre encima de las otras aplicaciones.

En PyQt4 es fácil crear una ventana que siempre estará arriba. Esto se trata aquí: PyQt: Siempre arriba

Lo que quiero es tener un widget (elemento de menú, checkbox, etc.) que active o desactive este comportamiento. Hasta ahora no he encontrado una manera de restablecer el comportamiento original.

gracias

ACTUALIZACIÓN Después de la sugerencia de İsmail ‘cartman’ Dönmez, busqué un poco más y encontré una implementación del ejemplo WindowFlags en PyQt4.

Se puede encontrar aquí.

Esto debería desactivarlo:

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

Esto debería habilitarlo:

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

Desea la sugerencia Qt::WindowStaysOnTopHint , consulte el Ejemplo de indicadores de ventana .

Rosh tiene razón. Pero no olvide incluir window.show () después de cambiar la bandera. Su ventana se ocultará cuando se cambie la bandera. También he incluido el código para alternar la bandera.

Esto lo aclarará:

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

Esto lo habilitará:

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

Esto lo cambiará:

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

No puedo comentar sobre la respuesta de Rosh , por lo que debo anotar aquí: para PyQt 5.7 en Devuan, si activa el indicador WindowStaysOnTopHint en un QDialog después de que se muestra, la ventana desaparece y debe mostrar () nuevamente inmediatamente. Aparte de esto funciona.