web-dev-qa-db-ja.com

QVBoxLayoutのウィジェット間のスペース

Qt5.0.1でサインインフォームを作成しようとしています。 2つのウィジェットを作成し、そのうちの1つにラベルと行の編集を配置し、もう1つにボタンを配置しました。次に、これら2つのウィジェットをQVBoxLayoutに配置しましたが、レイアウト内の2つのウィジェット間のスペースは目的を超えています。 setSpacingとsetContentsMarginを試しましたが、このプログラムでは機能しませんでした。

vhandle->setSpacing(0);
vhandle->setMargin(0);
vhandle->setContentsMargins(0,0,0,0);
vhandle->addWidget(handle,0, Qt::AlignTop);
vhandle->addWidget(handle2,0, Qt::AlignTop);

しかし、2つのウィジェット間のスペースは何も変わりませんでした。

http://i.stack.imgur.com/R33MM.png

私は何をすべきか?

13
Aidin.T

問題は、QVboxLayoutのマージン設定ではなく、コンテナウィジェットのレイアウトのマージン設定とQVBoxLayoutの間隔設定です。間隔はすでに0に設定されていますが、これで問題ありません。さらに、upperWidgetLayoutが上のウィジェットのレイアウトであり、lowerWidgetLayoutが下のウィジェットのレイアウトであると仮定して、試してみてください。

upperWidgetLayout->setContentsMargins(-1, -1, -1, 0);
lowerWidgetLayout->setContentsMargin(-1, 0, -1, -1);

これにより、上部ウィジェットのレイアウトの下マージンと下部ウィジェットのレイアウトの上マージンが0に設定され、2つのウィジェットのコンテンツ間にスペースがなくなります。

Dialog Layout

さまざまなウィジェットに一時的に色を付けることは、通常、そのような問題を追跡するための良いアプローチです。 Qt Designerを使用してUIを設計し、生成されているソースコードを確認することもできます(またはプロジェクトで直接.uiファイルを使用します)。

15
Andreas Fester