Bonjour,
Je rencontre un problème pour intégrer une QScrollArea dans une de mes fenêtres.
Dans mon application, j'ai construit une fenêtre classique, héritant que QDialog, contenant un certain nombre d'éléments rangés dans des QGroupBox.
Voici le code de construction :
Avec cette construction chaque élément se dimensionne comme il le faut et la fenêtre s'adapte à leur taille. Seulement avec un trop grand nombre d'élément, la fenêtre devient verticalement trop grande et il me faut ajouter une scrollBar sur le côté. Et c'est là que les problèmes commencent.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 EditAlertsWindow::EditAlertsWindow(QWidget* parent) : QDialog(parent), m_closeButton(new QPushButton(QObject::tr("Fermer"))) { this->setStyleSheet(GLOBAL_STYLE); this->setLayout(m_layout); // Ajout des multiples éléments au layout avec m_layout->addWidget() m_layout->addWidget(m_closeButton, nbLignes + 1, 1, 1, 1, Qt::AlignCenter); QObject::connect(m_closeButton, SIGNAL(clicked()), this, SLOT(close()));
Le problème que me pose ce code est que même si la ScrollArea est bien située dans la fenêtre, il m'est impossible de changer sa taille. Lorsque je redimensionne la fenêtre qui la contient, la scrollArea ne suit pas.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 EditAlertsWindow::EditAlertsWindow(QWidget* parent) : QDialog(parent), m_closeButton(new QPushButton(QObject::tr("Fermer"))) { this->setStyleSheet(GLOBAL_STYLE); QScrollArea* area = new QScrollArea(this); area->setWidgetResizable(true); QFrame* frame = new QFrame; m_layout = new QGridLayout(frame); // Ajout des multiples éléments au layout avec m_layout->addWidget() m_layout->addWidget(m_closeButton, nbLignes + 1, 1, 1, 1, Qt::AlignCenter); QObject::connect(m_closeButton, SIGNAL(clicked()), this, SLOT(close())); area->setWidget(frame); area->show();
J'ai essayé plusieurs façon de faire : changer les sizePolicy, maximum et minimum pour la scroll area comme pour le widget conteneur, mais rien à faire, elle refuse de bouger.
Je ne sais pas quoi faire d'autre, alors vos idées sont les bienvenues.
Partager