Bonjour,

je rencontre un problème auquel je n'arrive pas à trouver de solution. Dans mon programme, j'ai un QFormLayout dont le contenu doit changer à chaque fois que l'utilisateur modifie une QComboBox.

J'ai donc cherché une fonction de type "clear" sur un QFormLayout, mais sans succès. Dans des forums, j'ai vu qu'il était conseillé de l'encapsuler dans un QWidget. Mon code devient donc :

Dans le .h

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
private:
    QWidget * m_container = nullptr;
Dans mon .cpp
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
 
/* Le code qui permet d'appeler la modification du QFormLayout */
filterDefinitionWindow::filterDefinitionWindow(QWidget * parent) : QDialog(parent) {
    QComboBox * m_filterType = new QComboBox();
    layout->addWidget(m_filterType);
    connect(m_filterType, SIGNAL(currentIndexChanged(int)), this, SLOT(constructLayout(int)));
}
 
void filterDefinitionWindow::constructLayout(const int index) {
    if(m_container->layout()!=0)
        delete(m_container->layout());
    QFormLayout * form = new QFormLayout();
    m_container->setLayout(form);
    /* Ajoute les éléments dans le QFormLayout */
    switch(index) {
        case 0: form->addRow(QLabel....QLineEdit...); break;
        case 1: from->addRow(QLabel....QLineEdit...); break;
        .......
    }
}
Le problème est que je QFormLayout est bien supprimé mais les QWidgets qu'il contient ne le sont pas.

Est-ce que vous auriez un conseil pour résoudre mon problème ? Merci d'avance.