2013-02-21 102 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