Layout

Les objets Layout permettent de disposer (Layout=disposition en anglais) automatiquement des widgets dans une fenêtre. Si on change la taille de la fenêtre, les widgets sont automatiquement repositionnés et redimensionnés.

Vertical layout

Permet de garder les widgets centrés verticalement.

Horizontal layout

Permet de garder les widgets centrés horizontalement.

Grid Layout

Positionne les widgets selon une grille.

Code de placement

    for(int i = 0; i < 100; i++)

        {

         ui->gridLayout->addWidget(mesBoutons.at(i),i/10,i%10);

        }

Form layout

Très utile lorsque l'on créé des formulaires. Il permet de garder alignés les champs de textes et les champs de saisie.




Comment placer 4 images bien rangées dans un gridLayout ?

Avec QTDesigner, placer le gridLayout dans la fenêtre.


Dans le .h dans la partie private de la class de la fenêtre :

on déclare les labels liés aux images

....

    QLabel *firstBmp;

    QLabel *scndBmp;

    QLabel *thirdBmp;

    QLabel *fourthBmp;

...


Dans le .cpp

A la construction de la fenêtre :

Dialog::Dialog(QWidget *parent) :

    QDialog(parent),

    ui(new Ui::Dialog)

{

    ui->setupUi(this);

    setFixedSize(450,470); //taille de la fenêtre

    MainWindow m;

    firstBmp = new QLabel;

    scndBmp = new QLabel;

    thirdBmp = new QLabel;

    fourthBmp = new QLabel;

Insertion des images dans le gridLayout On doit préciser la rangée (row) et la colonne (column)

    ui->gridLayout->addWidget(firstBmp,0,0);

    ui->gridLayout->addWidget(scndBmp,0,1);

    ui->gridLayout->addWidget(thirdBmp,1,0);

    ui->gridLayout->addWidget(fourthBmp,1,1);

}

Dans une procédure ou une fonction :

      QPixmap *fiPix = new QPixmap("first.bmp");

      QPixmap *sPix = new QPixmap("second.bmp");

      QPixmap *tPix = new QPixmap("third.bmp");

      QPixmap *fPix = new QPixmap("fourth.bmp");

      firstBmp->setPixmap(fiPix->scaled(200,200,Qt::KeepAspectRatio));

      scndBmp->setPixmap(sPix->scaled(200,200,Qt::KeepAspectRatio));

      thirdBmp->setPixmap(tPix->scaled(200,200,Qt::KeepAspectRatio));

      fourthBmp->setPixmap(fPix->scaled(200,200,Qt::KeepAspectRatio));