2011-12-05 9 views
0

私のQtアプリケーションのメインウィンドウウィジェットのctorに次のコードがあります。 QGridLayoutに追加されたボタンをどのように整列させても、それらは常に左上の角の上に残ります。Qt GridlayoutはGUI要素を再編成しません

私が間違ったことを誰にでも教えてもらえますか?私はそれを見つけることができません。

btn_File= new QPushButton("&File", this); 
btn_Close = new QPushButton("&Close", this); 
btn_File->setAutoFillBackground(true); 
btn_Close->setAutoFillBackground(true); 

QGridLayout * layout = new QGridLayout(this); 
layout->setContentsMargins(20,20,10,10); 
layout->setSpacing(5); 
layout->addWidget(btn_File,2,2, Qt::AlignRight); 
layout->addWidget(btn_Close,1,1); 
this->setLayout(layout); 

編集:btn_Closeが描画されているようです。私はちょうどグリッドにQComboBoxを追加しようとしましたが、表示されません。

+0

これは正常に動作するはずです。デザイナーで別のレイアウトを使用していないことは確かですか? – pnezis

+0

@webclectic私はデザイナーを使用していません。私はVS2008を使ってコードからすべてをやっています。 –

答えて

0

最後にthis->adjustSize()を呼び出しましたか?

+0

はい、私はやりました。違いを生み出さないと思う。 –

1

メインウィンドウがQMainWindowから派生していて、GUI要素を追加する前にCentralWidgetを追加する必要があるという問題がありました。私は代わりにQWidgetから派生するために私のメインウィンドウを変更し、今は動作します。

+0

これをコメントとして元の投稿に追加することができます。 – timwoj

0

qtレイアウトは本当に吸う! qgridlayoutの位置合わせは、オブジェクトのサイズ、オブジェクトに必要な列の数、挿入される最大のオブジェクトのサイズによって決まります。 setGeometryを使うことをお勧めします。代わりに移動!

関連する問題