Bonjour,

Je développe sous QT 5.12. Pour organiser une des vues (Classe Mere) de mon application, je dispose mes widgets qui sont des QFrame à l'aide d'un QGridLayout. Pour simplifier ma question j'ai donné respectivement les noms A, B, C, D aux quatre widgets QFrame

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
17
18
19
20
21
22
 
Mere::Mere(Qwidget* parent)
   : QWidget(parent)
{
m_viewLayout = new QGridLayout();
 
// create frames parts 
A = new QFrame(this);
B = new QFrame(this);
C = new QFrame(this);
D = new QFrame(this);
 
m_rowSpan = 4;
m_columnSpan = 5;
 
m_viewLayout->addWidget(A, 0, 0, m_rowSpan, m_columnSpan);
m_viewLayout->addWidget(B, 0, m_columnSpan, m_rowSpan, 1);
m_viewLayout->addWidget(C, m_rowSpan, 0, 1, m_columnSpan);
m_viewLayout->addWidget(D, m_rowSpan, m_columnSpan, 1, 1);
 
...
}
J'ai dans mon application un classe (ou plusieurs) fille qui hérite de la classe mère. Dans cette classe fille je voudrais par exemple ajouter une nouvelle QFrame "E" dans le griLayout, modifier la proportion des QFrames A et B et cacher les QFrames C et D.
Dans la documentation du QGridLayout je n'ai pas vu de méthode permettant de repositionner les widgets inclus.
La méthode que j'ai utilisé c'est de faire des remove des widgets A et B puis de les ajouté avec les nouvelles proportions. comme indiqué ci-dessous

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
17
18
19
 
Fille::Fille(Qwidget* parent)
   : Mere(parent)
{
 
// create frames parts 
E = new QFrame(this);
 
C->hide();
D->hide();
 
m_viewLayout->removeWidget(A);
m_viewLayout->removeWidget(B);
m_viewLayout->addWidget(A, 0, 0, m_rowSpan-1, m_columnSpan);
m_viewLayout->addWidget(B, 0, m_columnSpan, m_rowSpan-1, 1);
m_viewLayout->addWidget(E, m_rowSpan-1, 0, -1, -1);
 
...
}
Ma première question c'est de savoir si cette technique est réellement la plus simple pour réorganiser un QGridLayout?

Ensuite le résultat que j'obtiens dans la vue de la classe Fille ne correspond pas à ce que j'attends. La QFrame E a une dimension en hauteur équivalente à celle précédemment des QFrame C et D alors que je spécifie bien que la position de la QFrame E est plus avancé ( m_rowSpan-1) et la dimension des QFrame A et B est inférieur que dans la classe Mere le RowSpan = m_rowSpan - 1

Auriez vous s'il vous plait une idée pour résoudre ce problème?

Merci.