2011-09-16 31 views
1

我正在嘗試爲我的Qt(使用PyQt)應用程序添加一個「全屏」選項。如果用戶點擊F11,則目標是最大化窗口。我可以更改窗口小部件構造函數之外的windowFlags嗎?

雖然我在刪除窗口標題欄時遇到了問題。通常情況下,我會在__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或任務管理器切換回它。

如何更改窗口標誌?

回答

2

Qt documentation on QWidget::windowFlags

注意:該函數調用setParent()改變標誌,當一個窗口,使窗口小部件被隱藏。您必須致電show()才能使窗口小部件再次可見。

所以只需在self.setWindowFlags(...)之後加self.show(),你就會好起來的。

+0

D'oh!我幾次閱讀這段確切的文章並且錯過了。感謝您指出明顯。 – Andy

相關問題