9

質問はそれをすべて言います。

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

このように見えます

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

row 1:  empty row

row 2:  buttonC  nothing  buttonD   nothing   buttonE  nothing  buttonF     

列全体または行全体に何もないスペースでは、minimumRowHeight とそれらのすべての設定が機能します。右?

良い。ボタン A とボタン B (およびその他のボタン) は、それらが共有する 3 つのセルの中央に配置されることはありません。一度もない。レイアウトのパラメータに何を書いてもかまいません。

コードは、最終的に垂直レイアウトを使用して取得したため、コードを消去しました。内部では、2 つの水平レイアウトが使用されています。それらはそのように中心になります。しかし、私はそれらをより良く配置したいと思います。

機能しないのは、次を使用してウィジェットを追加する場合です。

addWidget( ウィジェット, 0,0 , 2,0 , Qt::AlignHCenter ); AlignCenter でさえ機能しません。

中央揃えまたは右揃えにする方法は?

ありがとう!

4

1 に答える 1

17

QGridLayout::addWidget()の構文は次のようになります。

void QGridLayout::addWidget ( QWidget * widget, int fromRow, int fromColumn, int rowSpan, int columnSpan , Qt::Alignment アライメント = 0 )

説明付き:

このバージョンは、指定されたウィジェットを複数の行/列にまたがるセル グリッドに追加します。セルは、rowSpan 行と columnSpan 列にまたがる fromRow 、fromColumn で始まります。

これはあなたの行を意味します

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

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

だからあなたが本当に欲しいものは次のとおりです:

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

アライメントを少し試してみる必要があるかもしれません。

于 2013-01-15T11:57:36.970 に答える