0

Qt アプリのメイン ウィンドウ ウィジェットの ctor に次のコードがあります。QGridLayout に追加されたボタンをどのように配置しても、ボタンは常に左上隅に重なって表示されます。

私が間違ったことを誰か教えてもらえますか、見つけられません。

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 をグリッドに追加しようとしましたが、表示されません。

4

3 に答える 3

1

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

于 2011-12-05T13:05:59.080 に答える
0

qtレイアウトは本当に最悪です!qgridlayout の位置合わせは、オブジェクトのサイズ、オブジェクトに必要な列の数、および挿入される最大のオブジェクトのサイズによって異なります。そのため、必要に応じてオブジェクトを配置することは非常に困難です... setGeometry を使用するか、代わりに移動することをお勧めします!

于 2011-12-05T15:24:08.257 に答える
0

最後に電話this->adjustSize()してみた?

于 2011-12-05T12:42:26.507 に答える