2011-07-28 4 views
2

J'ai essayé de comprendre comment les coordonnées d'un widget est arrivé à. Par exemple dans la documentation qt, je me demande comment cela est fait.QGridLayout coordonnées système

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(); 

Comment l'auteur arrive aux coordonnées ci-dessus, at-il/elle utilise la connaissance du plan cartésien?

+1

Vous pouvez penser comme un système cartésien avec un axe Y inversé. C'est à dire. x va de gauche à droite et y de haut en bas. Le premier paramètre de nombre est la coordonnée Y, le second est la coordonnée X. Dans le cas où il y a 4 paramètres de nombre, le 3ème paramètre est l'étirement dans la direction Y et le 4ème l'étirement dans la direction X. Vous pouvez cependant également penser aux lignes/colonnes (comme dans une vue de table par exemple) comme suggéré par OrcunC. –

Répondre

4

QGridLayout utilise une logique simple rangée/colonne. Les numéros de ligne et de colonne commencent à 0 comme d'habitude.

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 

Est-ce ce que vous demandez?

1

QGridLayout :: addWidget a deux formes différentes.
Le premier:

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

Ajoute le widget donné à la grille de la cellule à la ligne, la colonne.
Le second:

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

La cellule commencera à fromRow, fromColumn Extension sur plusieurs lignes et colonnes rowspan columnspan.

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. 

Référence: qt doc

Questions connexes