11

フォームにQHBoxLayout3つのレイアウトが追加されています。2つ目は私の質問に関する項目です。

QVBoxLayoutメインレイアウトの2番目のペイン( )にがありQHBoxLayoutます。これに。QVBoxLayoutQScrollArea追加されていaddWidgetます。

これは、呼び出された「scrollContents」QScrollAreaの親であり、これには。が含まれます。QWidgetQGridLayout

QGridLayoutこれに、高さが固定されたカスタム作成のウィジェットを追加しています。今のところこれを考えることができ100pxます。

QGridLayout全高がフォーム自体よりも低いアイテムがある場合は、これらのウィジェットを同じ量のスペースで垂直方向に中央揃えにします。

ウィジェットが1つしかない場合は、真ん中に表示されます。しかし、私はそれらを上から下にリストしてほしい。

例:[###は、が付いている領域QScrollAreaQWidget表します QGridLayout

   OK      ->   DESIRED    -> NOT DESIRED AND WHAT HAPPENS
##########    ##########               ##########
# |item| #    # |item| #               #        #
# |item| #    #        #               #        #
# |item| #    #        #               #        #
# |item| #    #        #               # |item| #
# |item| #    #        #               #        #
# |item| #    #        #               #        #
# |item| #    #        #               #        #
##########    ##########               ##########
  |item|
  |item| 
  |item|

基本的に:9つの「行」のスペースがある場合、1つのアイテムを追加すると、5番目の位置の中央に表示されます。9個以上ある場合は、表示されます。8個以下の場合は、それらの間のスペースが拡張され、すべてが中央に配置されます。

どうすればこれを解決できますか?

ありがとうございました。

4

3 に答える 3

16

QGridLayout :: addWidget()にはalignmentパラメーターがあります。次のコードは私のために働きます:

gridLayout->addWidget(new QPushButton("Button"), 0, 0, Qt::AlignTop);
于 2012-12-25T21:11:35.877 に答える
7

trollixxが回答したものとは異なる方法もあります。垂直サイズポリシーが展開に設定されたダミーウィジェットを、の「下部」に追加しますQGridLayout。この回答を参照してください。この回答には、ツールバーの例も含まれています

于 2012-12-25T21:18:39.570 に答える
1

下部に垂直スペーサーを使用します。それが目的です。

于 2018-07-17T16:48:38.473 に答える