0

我为有史以来最令人困惑的主题行道歉,但我认为我从根本上误解了有关布局和尺寸提示的一些东西。

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

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

如果我将主要小部件的最小尺寸设置为其当前尺寸,并在用户隐藏/显示组框时将主窗口的尺寸调整为最小尺寸,我将拥有我想要的大部分行为,除了小部件不能缩小。如果我让主要小部件的 sizepolicy 成为首选并改为调整 sizehint,将主窗口调整为最小尺寸总是将主要小部件调整为其最小尺寸。到目前为止,我尽最大努力尝试在对其他小部件进行任何更改之前设置最小尺寸,进行更改,将窗口调整为最小尺寸,然后在事情“平静下来”后恢复“真实”最小尺寸。我不是 100% 确定如何确保事情已经平静下来,发送已发布的事件,然后在处理程序中恢复零时间 QTimer 的最小大小似乎有点小故障,并且容易出现我不太了解的比赛。(有时窗口在隐藏某些东西后仍然很大,有时它似乎最小化了主要小部件,尽管我努力保护它。)

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

4

1 回答 1

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

于 2013-02-21T22:42:43.177 回答