Qt4 如何保持主窗口的最小大小,但保持一个小部件的大小*除非*用户正在调整主窗口的大小?

Qt4 如何保持主窗口的最小大小,但保持一个小部件的大小*除非*用户正在调整主窗口的大小?,qt4,pyqt4,Qt4,Pyqt4,我为有史以来最令人困惑的主题行道歉,但我认为我基本上误解了布局和尺寸提示 我有一个主窗口,其中有一个“主体”小部件和另一组用户可以显示或隐藏的GroupBox。还有一些QLabel显示的状态信息大小不同,具体取决于正在发生的事情。主体小部件应该尽可能大,但可以是任意大小 我想要的行为是,主窗口小部件的大小应该是恒定的,当其他窗口小部件显示/隐藏或改变大小时,主窗口应该增长或收缩。但是,当用户调整主窗口的大小时,主窗口小部件的大小应该更改为占用其他窗口小部件未占用的所有可用空间 如果我将主体小部件

我为有史以来最令人困惑的主题行道歉,但我认为我基本上误解了布局和尺寸提示

我有一个主窗口,其中有一个“主体”小部件和另一组用户可以显示或隐藏的GroupBox。还有一些QLabel显示的状态信息大小不同,具体取决于正在发生的事情。主体小部件应该尽可能大,但可以是任意大小

我想要的行为是,主窗口小部件的大小应该是恒定的,当其他窗口小部件显示/隐藏或改变大小时,主窗口应该增长或收缩。但是,当用户调整主窗口的大小时,主窗口小部件的大小应该更改为占用其他窗口小部件未占用的所有可用空间

如果我将主体小部件的最小大小设置为当前大小,并在用户隐藏/显示groupbox时将主窗口的大小调整为最小大小,我就拥有了我想要的大部分行为,但小部件不能收缩。如果我让主体小部件的sizepolicy成为首选,并调整sizehint,则将主窗口大小调整为最小大小总是将主体小部件的大小调整为最小大小。到目前为止,我的最大努力是在对其他小部件进行任何更改之前设置最小大小,进行更改,将窗口大小调整为其最小大小,然后在事情“平静下来”后恢复“真正的”最小大小。不过,我不能100%确定如何确保事情平静下来,因为发送发布的事件,然后在处理程序中恢复零时间QTimer的最小大小似乎有点小问题,而且容易发生我不太理解的比赛。(有时窗口在隐藏某些内容后仍然很大,有时它似乎最小化了主窗口小部件,尽管我努力保护它。)

我有一种感觉,我只是错过了一些基本的东西,这应该比我现在做的要简单得多。任何协助都将不胜感激

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应该是可互换的。

不太一样。QLCDNumber是我这里的“主要部件”。当单击按钮且工具栏消失时,主窗口应缩小,以便QLCDNAMER的区域保持不变。但是,在单击按钮之前,QLCDNAME应该可以自由调整大小(现在是这样)。这是因为对象的相对尺寸很重要吗?例如,它是一个4:3的图像或什么的?是的,但由于不同的相对尺寸可能取决于特定的图像,我必须依靠用户来设置所需的纵横比。除此之外,我不想改变像素的大小,除非用户希望我这样做。所以我希望principle小部件的大小基本上是固定的,除非用户调整整个窗口的大小,在这种情况下,它应该适当地调整大小。