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つのウィジェット間のスペースは何も変わりませんでした。
私は何をすべきか?
問題は、QVboxLayout
のマージン設定ではなく、コンテナウィジェットのレイアウトのマージン設定とQVBoxLayoutの間隔設定です。間隔はすでに0に設定されていますが、これで問題ありません。さらに、upperWidgetLayout
が上のウィジェットのレイアウトであり、lowerWidgetLayout
が下のウィジェットのレイアウトであると仮定して、試してみてください。
upperWidgetLayout->setContentsMargins(-1, -1, -1, 0);
lowerWidgetLayout->setContentsMargin(-1, 0, -1, -1);
これにより、上部ウィジェットのレイアウトの下マージンと下部ウィジェットのレイアウトの上マージンが0に設定され、2つのウィジェットのコンテンツ間にスペースがなくなります。
さまざまなウィジェットに一時的に色を付けることは、通常、そのような問題を追跡するための良いアプローチです。 Qt Designerを使用してUIを設計し、生成されているソースコードを確認することもできます(またはプロジェクトで直接.uiファイルを使用します)。