我正在尝试添加一个"全屏"我的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或任务管理器切换回它。
如何在飞行中更改窗口标志?
答案 0 :(得分:2)
来自Qt documentation on QWidget::windowFlags:
注意:此函数在更改窗口标志时调用
setParent()
,导致窗口小部件被隐藏。您必须致电show()
以再次显示小部件。
所以只需在self.show()
之后添加self.setWindowFlags(...)
即可。