PyQt: всегда на высоте

Это на PyQt4, Linux и Python 2.5

Могу ли я сделать так, чтобы PyQt устанавливал мое окно всегда поверх других приложений?

Например, в GTK я использую свойство: Modal.

Сейчас в PyQt я использую QWidget, но я не могу найти способ сделать это.

Есть идеи??

3 ответа

Решение

Передайте QMainWindow в WindowStaysOnTopHint флаг окна (или используйте setWindowFlags).

Как и в названии, это подсказка для оконного менеджера (не является твердой гарантией).

Простейший возможный пример:

import sys
from PyQt4 import QtGui, QtCore

class mymainwindow(QtGui.QMainWindow):
    def __init__(self):
        QtGui.QMainWindow.__init__(self, None, QtCore.Qt.WindowStaysOnTopHint)

app = QtGui.QApplication(sys.argv)
mywindow = mymainwindow()
mywindow.show()
app.exec_()
setWindowFlags(QtCore.Qt.WindowStaysOnTopHint)

setwindowaFlags это метод, который может вызвать его из form объект и просто принять один параметр является константой QtCore.Qt.WindowStaysOnTopHint которые относятся к вашей форме остается на вершине

Как для безрамочного окна (без заголовка), так и для всегда сверху.
ИСПОЛЬЗОВАТЬ:setWindowFlags(QtCore.Qt.WindowStaysOnTopHint | QtCore.Qt.FramelessWindowHint)

ПРИМЕЧАНИЕ. Если вы попытаетесь установить отдельные флаги окон, безрамочное окно работать не будет. например:

      self.setWindowFlags(Qt.FramelessWindowHint)
self.setWindowFlags(Qt.WindowStaysOnTopHint)
Другие вопросы по тегам