J'ai fait l'exercice sur le widget à onglet du chapitre 8 du cours sur QT et j'ai voulu afficher une image perso (une belle carte du monde pour tracer la trajectoire de fusées et de satellites du moins c'est le but que je cherche à atteindre :-) seulement avec la fonction que j'ai utilisée (page3->setScaledContents(true)) l'image apparaît bien en entier dans la page de l'onglet mais elle est déformée (étirée vers le haut). Quelqu'un sait-il comment faire pour que l'image soit affichée sur toute la largeur sans être déformée en hauteur ?
Voici mon code :
#include <QApplication>
#include <QtWidgets>
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QWidget fenetre;
// 1 : Créer le QTabWidget
QTabWidget *onglets = new QTabWidget(&fenetre);
onglets->setGeometry(30, 20, 340, 260);
// 2 : Créer les pages, en utilisant un widget parent pour contenir chacune des pages
QWidget *page1 = new QWidget;
QWidget *page2 = new QWidget;
QLabel *page3 = new QLabel; // Comme un QLabel est aussi un QWidget (il en hérite), on peut aussi s'en servir de page
// 3 : Créer le contenu des pages de widgets
// Page 1
QLineEdit *lineEdit = new QLineEdit("Entrez votre nom");
QPushButton *bouton1 = new QPushButton("Cliquez ici");
QPushButton *bouton2 = new QPushButton("Ou là…");
QVBoxLayout *vbox1 = new QVBoxLayout;
vbox1->addWidget(lineEdit);
vbox1->addWidget(bouton1);
vbox1->addWidget(bouton2);
page1->setLayout(vbox1);
// Page 2
QProgressBar *progress = new QProgressBar;
progress->setValue(50);
QSlider *slider = new QSlider(Qt::Horizontal);
QPushButton *bouton3 = new QPushButton("Valider");
QVBoxLayout *vbox2 = new QVBoxLayout;
vbox2->addWidget(progress);
vbox2->addWidget(slider);
vbox2->addWidget(bouton3);
page2->setLayout(vbox2);
// Page 3 (je ne vais afficher qu'une image ici, pas besoin de layout)
page3->setPixmap(QPixmap("World_map.png"));
page3->setAlignment(Qt::AlignCenter);
page3->setScaledContents(true); // OK
// page3->setBaseSize(100,50); // NOK
// page3->setFixedHeight(150); // NOK
// page3->pixmap->scaledToWidth(); // NOK
// 4 : ajouter les onglets au QTabWidget, en indiquant la page qu'ils contiennent
onglets->addTab(page1, "Coordonnées");
onglets->addTab(page2, "Progression");
onglets->addTab(page3, "Image");
fenetre.show();
return app.exec();
}
En fait de ce que je pense (ce n'est peut etre pas exact mais c'est le plus plausible que je trouve) le fait d'utiliser setScaledContents pourrait faire en sorte que ton label s'étire à la taille de ton tab...
Si tu ne le mets pas, que se passe-t-il?
Je viens de trouver un vieux topic qui utilise le meme procédé que toi, mais sans les setAlignment et setScaledContents
Si je ne met pas setScaledContents l'image s'affiche mais comme elle est trop grande il n'y a que sa partie centrale qui apparaît dans le conteneur. Donc c'est pas bon pour moi...
Cours de C++ moderne
Cours de C++ moderne