1

QSCrollAreaがあり、最後にaddStretch()が追加されたQVBoxLayoutがあります。

ここでのQScrollAreaは、現在addStretchによって占有されている下に空き領域があるにもかかわらず、使用可能な領域の半分しか使用できません。

QScrollAreaのコンテンツが十分に大きい場合は、QScrollAreaを使用可能なすべてのスペースに拡張する必要があります。QScrollAreaのコンテンツが小さい場合、QScrollAreaをそのサイズに縮小し、残りの使用可能なスペースをaddStetchで使用するようにします。

ただし、現在、小さなQScrollAreaの場合、これは機能しますが、QScrollAreaのコンテンツが大きい場合、使用可能なスペースの半分にしか拡張されません。

QScrollAreaとその下にあるスクロールウィジェットにさまざまなサイズポリシーを設定しようとしましたが、何も機能しません。

これをソートするための秘訣は何ですか?

これが私のコードの抜粋です[PythonではありますがC++での回答は大歓迎です]:

# My setup
self.layout = QVBoxLayout()
self.setLayout(self.layout)

scrollArea = QScrollArea()
self.layout.addWidget(scrollArea)
scrollArea.setWidgetResizable(True)
scrollArea.setEnabled(True) 

self.scrollWidget = QWidget()
self.scrollLayout = QVBoxLayout()
self.scrollWidget.setLayout(self.scrollLayout)

scrollArea.setWidget(self.scrollWidget)

# Now what I do is, I add bunch of widgets inside the self.scrollLayout
# and in the end, I perform a self.layout.addStretch() to push them up (verticle Alignment does same)
# Maximum height QScrollArea (scrollArea) gets is stuck at around 50% although I want to take all the space if necessary

可能なすべてのsetSizePolicy(..)オプションを追加しました

scrollArea.setSizePolicy(QSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding))
# and ALL others. None works. addStretch() still takes 50% minimum space and gets even more if QScrollArea's contents are smaller.
4

3 に答える 3

1

私はまったく同じ問題を抱えていましたが、解決策を見つけたと思います。QScrollAreaの後にストレッチを追加しないでください。ただし、QScrollAreaレイアウト内の最後の要素として追加してください。したがって、コードでは、self.scrollLayout.addStretch()の代わりにを使用しますself.layout.addStretch()

于 2013-01-13T23:06:57.000 に答える
1

私は解決策を見つけました。スクロールエリアのスクロールウィジェットを保持するためにsizeHintをオーバーライドする必要があります。スクロールウィジェットの最大高さを設定する必要があります。そして、このウィジェットを、それを一番上にプッシュするaddStretch()を使用してQVBoxLayout内に配置する必要があります。

于 2013-03-05T17:32:06.807 に答える
0

QScrollAreaのコンテンツが小さい場合、QScrollAreaをそのサイズに縮小し、残りの使用可能なスペースをaddStetchで使用するようにします。

QScrollAreaの内容が小さい場合は、それらを上に揃えて、垂直スクロールバーを非表示にすることができます。この場合、メインの垂直レイアウトにストレッチを追加する必要はありません。

コンテンツがQScrollAreaより大きい場合、使用可能なすべてのスペースが使用されます。

私は、これがあなたが必要としているものだと思います。

于 2013-01-10T06:20:49.310 に答える