我可以在小部件构造函数外更改窗口标志吗?
我正在尝试为我的Qt应用程序(使用PyQt)添加一个“全屏”选项。如果用户按下F11键,目标是将窗口最大化。
不过,我在去掉窗口标题栏时遇到了一些问题。通常,我会在__init__
方法里写类似self.setWindowFlags(QtCore.Qt.CustomizeWindowHint)
的代码,这样标题栏就不会显示(这是预期的效果)。但是,如果我启动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
来自Qt文档关于QWidget::windowFlags的内容:
注意:这个函数在改变窗口的标志时,会调用
setParent()
,这会导致这个小部件被隐藏。你必须调用show()
才能让这个小部件再次可见。
所以在self.setWindowFlags(...)
之后加上self.show()
就可以了。