Могу ли я изменить windowFlags вне конструктора виджета? - PullRequest
1 голос
/ 16 сентября 2011

Я пытаюсь добавить опцию «Full Screen» в мое приложение Qt (используя PyQt). Если пользователь нажимает F11, цель состоит в том, чтобы максимизировать окно.

У меня проблемы с удалением строки заголовка окна. Обычно я делал бы что-то вроде self.setWindowFlags(QtCore.Qt.CustomizeWindowHint) в __init__, и строка заголовка не отображалась бы (ожидаемое поведение). Однако, если я запускаю приложение Qt, а затем жду, пока пользователь нажмет F11, вот так:

def keyPressEvent(self, event):
    if event.key() == QtCore.Qt.Key_F11:
        self.__doFullScreenCheck()

def __doFullScreenCheck(self):
    if self.maximizedFlg == False:
        self.__maximizeWindow()

def __maximizeWindow(self):
    ***self.setWindowFlags(QtCore.Qt.CustomizeWindowHint)***
    screen = QtGui.QDesktopWidget().screenGeometry()
    self.setGeometry(screen)
    self.maximizedFlg = True

Наличие отмеченной линии в __maximizeWindow вне __init__, кажется, делает окно полностью исчезающим. Приложение все еще работает (видно в диспетчере задач), но я не могу вернуться к нему, используя Alt + Tab или диспетчер задач.

Как я могу изменить флажки окна на лету?

1 Ответ

2 голосов
/ 16 сентября 2011

Из документации Qt на QWidget :: windowFlags :

Примечание : эта функция вызывает setParent() при изменении флагов для окна,в результате чего виджет будет скрыт.Вы должны позвонить show(), чтобы снова сделать виджет видимым.

Так что просто добавьте self.show() после self.setWindowFlags(...) и все будет в порядке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...