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

时间:2013-02-21 21:52:55

标签: qt4 pyqt4

我为有史以来最令人困惑的主题道歉,但我认为我从根本上误解了有关布局和大小提示的内容。

我有一个主窗口,其中包含一个“主要”窗口小部件和另一组可由用户显示或隐藏的分组框。还有一些QLabel显示状态信息,大小不同,具体取决于发生的情况。主要小部件应该尽可能大,但它可以是任何大小。

我想要的行为是主要窗口小部件应该是常量大小,并且只要显示/隐藏其他窗口小部件或更改大小,主窗口就应该增大或缩小。但是,当用户调整主窗口的大小时,主窗口小部件的大小应该更改为占用其他窗口小部件未使用的所有可用空间。

如果我将主要窗口小部件的最小大小设置为其当前大小,并且每当用户隐藏/显示组框时将主窗口的大小调整为最小大小,我就拥有了我想要的大部分行为,除了窗口小部件无法缩小。如果我将主要窗口小部件的sizepolicy设置为Preferred并调整sizehint,则将主窗口的大小调整为最小大小始终会将主要窗口小部件调整为其最小大小。到目前为止,我的最大努力是尝试在对其他小部件进行任何更改之前设置最小大小,进行更改,将窗口大小调整为最小大小,然后在“平静”之后恢复“真实”最小大小。我不是百分之百确定如何确保事情已经平静下来,因为发送已发布的事件然后在处理程序中恢复零时间QTimer的最小大小似乎有点小问题并且容易发生种族问题我我真的不懂。 (有时隐藏某些东西后窗口仍然很大,有时候尽管我努力保护它,它似乎最小化了主要的小部件。)

我觉得我只是缺少一些基本的东西,这应该比我做的简单得多。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分: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应该是可以互换的。