2016-01-18 51 views
1

我想有一個CustomDialog,which'll具有最小化按鈕和關閉按鈕(沒有最大化)
所以,我做什麼Ubuntu的忽略PyQt4的標誌

from PyQt4 import QtGui 

class CustomDialog(QtGui.QDialog): 

    def __init__(self): 
     super(WinDialog, self).__init__(None, 
      QtCore.Qt.WindowMinimizeButtonHint |\ 
      QtCore.Qt.WindowCloseButtonHint|) 

在Windows它按預期工作 - 在標題欄去最小化按鈕,然後禁用最大化按鈕,然後關閉按鈕
在Ubuntu中,我看到以不變應萬變 - 旁邊的最大化按鈕關閉按鈕。沒有減少 - CustomDialog行爲就像它仍然是QDialog的。
我不知道如果這是Ubuntu的「錯誤」或「PyQt的」 - 現在我只是困惑。

回答

1

documentation

注意的Qt的X11版本可能無法提供所有系統上的樣式標記的所有組合。這是因爲在X11,Qt可以只問窗口管理器和窗口管理器可以覆蓋應用程序的設置。在Windows上,Qt可以設置你想要的任何標誌。

所以它很可能是你的Windows管理器在Ubuntu的錯。

請注意,你可能想嘗試更新現有的窗口標誌,只是爲了確保你沒有覆蓋的重要默認(當前設置的窗口標誌的方法只是設置中指定的)。您可以改爲做是爲了保留默認的窗口標誌,但修改你所關心的那些:

def __init__(self): 
    super(WinDialog, self).__init__(None) 
    windowFlags = self.windowFlags() 
    windowFlags &= ~Qt.WindowMaximizeButtonHint # remove maximise button 
    windowFlags &= ~Qt.WindowMinMaxButtonsHint # remove min/max combo 
    windowFlags &= ~Qt.WindowContextHelpButtonHint # remove help button 
    windowFlags |= Qt.WindowMinimizeButtonHint # Add minimize button 
    self.setWindowFlags(windowFlags) 

注意flags &= ~flag刪除一個標誌。 flags |= flag增加了一個標誌。