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