2011-07-28 22 views
2

私は、ウィジェットの座標がどのように到着しているかを把握しようとしています。たとえば、Qtのドキュメントでは、これがどのように行われたのでしょうか。QGridLayout座標系

Buttons example

QGridLayout *layout = new QGridLayout; 
    layout->addWidget(button1, 0, 0); 
    layout->addWidget(button2, 0, 1); 
    layout->addWidget(button3, 1, 0, 1, 2); 
    layout->addWidget(button4, 2, 0); 
    layout->addWidget(button5, 2, 1); 

    window->setLayout(layout); 
    window->show(); 

どのように著者は、上記の座標に到達しなかった、彼/彼女は、デカルト平面からの知識を使用しましたか?

+1

あなたが逆Y軸と直交座標システムと考えることができます。私。 xは左から右へ、yは上から下へと続く。最初の数値パラメータはY座標、2番目の数値はX座標です。 4つの数値パラメータがある場合、第3パラメータはY方向のストレッチであり、第4はX方向のストレッチである。しかし、OrcunCが示唆しているように、行/列(たとえば、テーブルビューのような)を考えることもできます。 –

答えて

4

QGridLayoutは単純な行/列ロジックを使用します。行番号と列番号は通常どおり0から始まります。

QGridLayout *layout = new QGridLayout; 

layout->addWidget(button1, 0, 0); //Add to row 0 column 0 
layout->addWidget(button2, 0, 1); //Add to row 0 column 1 

layout->addWidget(button3, 1, 0, 1, 2); //Add to row 1 column 0 and span to row 1 column 1 


layout->addWidget(button4, 2, 0);//Add to row 2 column 0 
layout->addWidget(button5, 2, 1);//Add to row 2 column 1 

これはあなたの質問ですか?

1

QGridLayout :: addWidgetには2つの異なる形式があります。
最初:

void QGridLayout::addWidget(QWidget * widget, int row, int column) 

は、行、列におけるセルのグリッドに与えられるウィジェットを追加します。 fromColumnがROWSPAN行columnSpan列にまたがる

void QGridLayout::addWidget(QWidget * widget, int fromRow, int fromColumn, int rowSpan, int columnSpan) 

セルがfromRowで開始され、:
二つ目。

layout->addWidget(button2, 0, 1);//button2 will be added to row 0, column 1 
layout->addWidget(button3, 1, 0, 1, 2);//button3 will be added to row 1, column 0 spanning 1 row and 2 columns. 

参考:qt doc