2013-01-11 8 views
5

質問はすべてです。QGridLayout内の複数のセルに含まれるウィジェットは、中央に配置されていません

私は5 x 3グリッドを持っています。

は、それが全体の列には何もありませんかminimumRowHeight行およびそれらの設定のすべてがうまくいくスペースには、この

row 0: buttonA--buttonA--buttonA nothing buttonB--buttonB--buttonB 

row 1: empty row 

row 2: buttonC nothing buttonD nothing buttonE nothing buttonF  

のように見えます。右?

ボタンAとボタンB(および残り)は、共有する3つのセルの中央に決して配置されません。決して。レイアウトのパラメータに何を書いても問題ありません。

最終的に垂直レイアウトと内側の2つの水平レイアウトを使用しているため、コードを消去しました。それらはそのように集中します。しかし、私は彼らをより良く位置づけたいと思います。

何doesn't作業使用して、ウィジェットを追加するときです:

addWidget(ウィジェット、0,0、2,0、Qtの:: AlignHCenterを)。 AlignCenterは動作しません。

これを中央に配置する方法や右に揃える方法はありますか?

ありがとうございます!

+0

私は、3つのセル空間内に拡張可能なダミーウィジェットを追加するように指示する記事をいくつか見つけました。次に、その上にレイアウトを挿入し、中央に配置したいウィジェットを挿入します。それは働くだろうか?それほど複雑ではありませんか? – darkgaze

+0

サイドノートでは、7 x 3のグリッドを表示しましたが、5 x 3の1つではありません –

+0

buttonAを3列にわたって伸ばしたい場合は、「addWidget(widget、0、0、** 0、 3 **); "これがうまくいくと試してみてください –

答えて

9

QGridLayout::addWidget()の構文は次のようである:

無効QGridLayout :: addWidget(QWidgetの*ウィジェット、int型fromRow、int型fromColumn、int型ROWSPAN、int型columnSpan、Qtの::アライメントアライメント= 0)説明と

このバージョンでは、μに及ぶ、セルのグリッドに与えられるウィジェットを追加しますltiple行/列。セルは、FromRow、fromColumn 、行スパン行と列スパン列から始まります。

これは

addWidget(widget, 0, 0, 2, 0, Qt::AlignHCenter); 

fromRow = 0fromColumn = 0rowSpan = 2columnSpan = 0を持っているあなたの行を意味します。つまり、行0から始まり2行にまたがります。つまり、行0と1になります(注:合計2行、追加行2行ではありません)。また、カラム0からスパン0で始まり、カラムスパンが無視されると思います。

だから、あなたが本当にあるべき欲しいもの:

addWidget(widget, 0, 0, 0, 3, Qt::AlignCenter); 

あなたは、アライメントビットを試してみる必要がある場合があります。

さらに、2行2列のボタンを伸ばす方法を示すthis exampleをご覧ください。

+0

素晴らしい!良くやった。すてきな答えをありがとう – darkgaze

関連する問題