2012-04-14 16 views
1

私はQGridLayoutに6行のウィジェットをいくつか持っています。行1,3および5には、ファイル選択ダイアログを開くQLabel,QLineEditおよびQPushButtonが含まれています。行2,4、および6には、ユーザーに検証エラーを表示するために使用されるQLabelが含まれています。エラーは、下の画像に隠されています。QGridLayoutのウィジェットが重複しないようにするにはどうすればいいですか?

ウィンドウが好きなだけスペースを取ることができる場合、この問題は表示されません。私は全くのウィンドウのサイズを制限する場合でも、このリスト内の要素は次のようになります。

QGridLayout with vertically restricted elements

だから私の質問ですが、私は確実んかQGridLayout内のすべてのqwidgetsは、できるだけ多く取ることができること彼らが必要とするスペース?

EDIT:@Avaris'の提案に続き 、私はQGridLayout(全6行)の各ウィジェットのsetMinimumSize()を呼び出して試みたが、目に見える要素がずっとよく見える(おかげで、@Avaris!)。しかし、今私は検証エラーが発生すると、エラー自体(赤QLabel)は、他のウィジェットの上に置かれます。重複しないようにQGridLayoutを強制できますか?ここで

は、それが今のようになります。 enter image description here

+1

これらのウィジェットの最小サイズを何か小さく設定しましたか? – Avaris

+0

@Avaris、私はあなたの提案を試み、それは目に見える要素のためにうまくいきます。しかし、他の行(隠された 'QLabel'を含む)が他の要素の上に表示されるようになりました。それらをすべて強制的に一致させることはできますか?ありがとう! – James

+0

私は最小サイズを設定することを提案していません:)。あなたが前に何かを設定したかどうか聞いていました。ウィジェットのサイズを設定していない場合は、そのサイズを小さくするべきではありません。いくつかのコードを投稿できますか? – Avaris

答えて

0

ソリューションの周りを探している間、私はウィジェットの最小サイズの設定についてAvarisのアイディア@サポートsomething in the TrollTech archivesを見つけました。投稿は、QGridLayoutの各ウィジェットの最小サイズを設定することを提案しています。

私の実装では、私はすべての要素をループが私のQGridLayoutに追加されるように、このようになります

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

ヒントの有効性は使用レイアウトに変化するが、ウィジェットsizehintsは常にとき私有効であると思われますQGridLayoutを使用します。

+0

あああ。リンクが死んでしまった、あなたはそれが何だったのか覚えていますか? – vines

+0

ああ、申し訳ありませんが、私は詳細を覚えていません! TrollTechアーカイブのコードサンプルのほとんどはC++で書かれているので、私は上で提供したPythonコードの例と非常に似ていると思われます。 – James

関連する問題