0

これまでで最も紛らわしい件名をお詫びしますが、レイアウトとサイズのヒントについて根本的に誤解していると思います。

1つの「主要な」ウィジェットと、ユーザーが表示または非表示にできる別のグループボックスのセットを含むメインウィンドウがあります。何が起こっているかに応じてサイズが異なるステータス情報を表示するQLabelもいくつかあります。主要なウィジェットはできるだけ大きくする必要がありますが、任意のサイズにすることができます。

私が望む動作は、主要なウィジェットは一定のサイズであり、他のウィジェットが表示/非表示になるかサイズが変更されるたびにメインウィンドウが拡大または縮小する必要があるということです。ただし、ユーザーがメインウィンドウのサイズを調整する場合、他のウィジェットが使用していない使用可能なスペースをすべて使用するように、プリンシパルウィジェットのサイズを変更する必要があります。

プリンシパルウィジェットの最小サイズを現在のサイズに設定し、ユーザーがグループボックスを表示/非表示にするたびにメインウィンドウのサイズを最小サイズに変更すると、ウィジェットを縮小できないことを除いて、必要な動作のほとんどが得られます。プリンシパルウィジェットのsizepolicyをPreferredにして、代わりに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 に答える