2013-05-07 4 views
6

をウィジェットを追加します。たとえば、アイテムを追加すると、最初に開始点が置かれ、最後に配置され、最後から配置されます。QT - 私は水平方向のレイアウトを持っていると私は</p> <pre><code>ui->horizontalLayout->addWidget(label); </code></pre> <p>を使用してでも戦略は、私が欲しいものではありません追加することにより、ウィジェットを追加してい水平レイアウトに

adding 3 widgets

keep adding

しかし、私が欲しいのは、私がレイアウトにウィジェットを追加するとき、それは次の前のウィジェットに置くべきである、ということです。そのように、 what i want

これは可能ですか?

答えて

5

すべてのウィジェットを追加したら、ストレッチャーを追加します。

ui->horizontalLayout->addStretch(); 

となります。

+0

私は試しましたが動作しません – abby

+0

結果は何ですか? –

+0

まだ何も変わっていません。 – abby

2

spacer itemは、水平レイアウトの外側または水平レイアウトの内側に追加できます。スペーサーアイテムを水平レイアウトの内側に追加する場合は、スペーサーアイテムの前にラベルウィジェットを追加する必要があります。この場合、insertWidget()関数を使用してラベルを追加してください。

ラベルウィジェットを追加した後に、横書きレイアウトの最後にスペーサーアイテムを追加することもできます。ここで

は一例です:

QHBoxLayout *hlayout = new QHBoxLayout; 
ui->verticalLayout->addLayout(hlayout); 
QSpacerItem *item = new QSpacerItem(1,1, QSizePolicy::Expanding, QSizePolicy::Fixed); 
hlayout->addSpacerItem(item); 
for(int i = 0; i < 10; i++) 
{ 
    QLabel *label = new QLabel("NOTE"); 
    hlayout->insertWidget(i, label); 
} 
+0

もっと具体的な例をスペーサーアイテムで使いますか? – abby

+0

@abby私は自分の答えを変更し、例を追加しました。 – thuga

+0

それは質問に入れた2番目の写真のように追加します。しかし、私は3枚目のようにノートの間にスペースを入れたくありません。 – abby

1

setAlignment(Qt::AlignLeft);は、トリックを行う必要があります。ウィジェット間の余分なスペースを削除するには、
setSpacing(0);setContentsMargins(0, 0, 0, 0);
と一緒に使用することもできます。