我可以在widget构造函数之外更改windowFlags吗?

时间:2011-09-16 13:58:10

标签: python qt pyqt

我正在尝试添加一个"全屏"我的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 个答案:

答案 0 :(得分:2)

来自Qt documentation on QWidget::windowFlags

  

注意:此函数在更改窗口标志时调用setParent(),导致窗口小部件被隐藏。您必须致电show()以再次显示小部件。

所以只需在self.show()之后添加self.setWindowFlags(...)即可。