1

QGridLayout6行に多数のウィジェットがあるがあります。行1、3、および5には、ファイル選択ダイアログを開く、、QLabela、QLineEditおよびaが含まれています。QPushButton行2、4、および6には、QLabel検証エラーをユーザーに提示するために使用されるが含まれています。エラーは下の画像に隠されています。

ウィンドウが好きなだけスペースを占有できる場合、この問題は発生しません。しかし、ウィンドウのサイズを制限すると、このリストの要素は次のようになります。

垂直方向に制限された要素を持つQGridLayout

だから私の質問は、QGridLayout内のすべてのqwidgetが必要なだけのスペースを占有できるようにするにはどうすればよいですか?

編集: @Avarisの提案に従ってsetMinimumSize()、(6行すべて)の各ウィジェットを呼び出してみQGridLayoutましたが、表示される要素の見栄えがはるかに良くなりました(ありがとう、@ Avaris!)。しかし、検証エラーが発生すると、エラー自体(赤QLabel)が他のウィジェットの上に配置されます。QGridLayoutを強制的にオーバーラップさせないようにできますか?

現在の状態は次のとおりです。 ここに画像の説明を入力してください

4

1 に答える 1

1

解決策を探し回っているときに、TrollTech アーカイブで、ウィジェットの最小サイズの設定に関する @Avaris のアイデアをサポートするものを見つけました。この投稿では、QGridLayout の各ウィジェットに最小サイズを設定することを提案しています。

QGridLayout に追加するすべての要素をループすると、私の実装は次のようになります。

widget = QtGui.QWidget()
hint = widget.sizeHint()
if hint.isValid():
    widget.setMinimumSize(hint)

ヒントの有効性は使用するレイアウトによって異なりますが、QGridLayout を使用する場合、ウィジェットのサイズヒントは常に有効であるように見えます。

于 2012-05-30T22:50:13.730 に答える