2013-02-21 100 views
0

我對有史以來最令人困惑的主題表示歉意,但我認爲我從根本上誤解了有關佈局和尺寸提示的內容。如何保持主窗口的最小尺寸,但保持一個窗口小部件的尺寸*除非*用戶正在調整主窗口的尺寸?

我有一個主窗口,其中包含一個「主體」小部件和另一組可用於顯示或隱藏的組框。還有一些QLabels顯示狀態信息的大小不同,具體取決於發生了什麼。主要部件應儘可能大,但可以是任何尺寸。

我希望的行爲是,主要小部件應該是常量大小,並且每當其他小部件顯示/隱藏或更改大小時,主窗口都應該增長或縮小。但是,當用戶調整主窗口的大小時,主窗口小部件的大小應該更改爲佔用其他窗口小部件未佔用的所有可用空間。

如果我將主窗口小部件的最小大小設置爲當前大小,並且每當用戶隱藏/顯示組窗口時將主窗口大小調整爲最小大小,我就擁有大部分的行爲,除了窗口小部件不能收縮。如果我讓主體小部件的sizepolicy爲Preferred並調整大小提示,則將主窗口調整爲最小大小始終將主體小部件調整爲其最小大小。到目前爲止,我盡最大努力嘗試設置最小大小,然後再對其他小部件進行任何更改,進行更改,將窗口大小調整爲最小大小,然後在「平靜下來」之後恢復「真實」最小大小。我不是100%確定如何確保事情已經平息下來,因爲發送已發佈的事件,然後在零時間QTimer的處理程序中恢復最小大小似乎有點失敗,並且容易出現比賽,我不是很瞭解。 (有時窗口在隱藏某些東西后仍然很大,有時儘管我努力保護它,但有時似乎儘量減少了主體部件。)

我覺得我只是缺少一些基本的東西,這應該比我在做。任何援助將不勝感激。

回答

0
from PySide import QtGui 

class MainWindow(QtGui.QMainWindow): 
    def __init__(self): 
    super(MainWindow, self).__init__() 

    self.setCentralWidget(QtGui.QLCDNumber()) 

    toolbar = QtGui.QToolBar("MyToolbar", self) 
    button = QtGui.QPushButton("Hide Me") 
    button.clicked.connect(toolbar.hide) 

    toolbar.addWidget(button) 
    self.addToolBar(toolbar) 

if __name__=='__main__': 
    import sys 

    app = QtGui.QApplication(sys.argv) 

    w = MainWindow() 
    w.show() 

    sys.exit(app.exec_()) 

對此是否有幫助?這是一個工具欄,但也許傳播相同的原則?編輯:爲了這樣簡單的目的,PySide和PyQt4應該是可以互換的。

+0

不完全。 QLCDNumber是我的「主要部件」。當單擊該按鈕並且工具欄消失時,主窗口應縮小,以便QLCDNumber的區域保持不變。但是,在點擊按鈕之前,QLCDNumber應該可以自由調整大小(如現在)。 – 2013-02-21 23:42:14

+0

是因爲物體的相對尺寸很重要?如在,它是一個4:3的圖像或東西? – RodericDay 2013-02-22 17:12:07

+0

是的,但由於不同的相對尺寸可能取決於特定的圖像,我不得不依賴於用戶設置所需的高寬比。除此之外,我不想改變像素的大小,除非用戶需要我。所以我希望原則小部件基本上是固定的大小,除非用戶調整整個窗口的大小,在這種情況下,它應該適當調整大小。 – 2013-02-26 00:23:56