Problème avec le slot quit de Qt

Résolu/Fermé
Mourad2009B Messages postés 100 Date d'inscription lundi 23 août 2010 Statut Membre Dernière intervention 7 juillet 2023 - 5 nov. 2012 à 19:06
Mourad2009B Messages postés 100 Date d'inscription lundi 23 août 2010 Statut Membre Dernière intervention 7 juillet 2023 - 19 nov. 2012 à 15:58
Bonjour,
Bonjour à tous,
Mon problème est le suivant
j'ai créé 1 QAction actionTableBrute, et un slot connecté à cette action qui affiche la maFenetreGestionTableBrute
voici le slot correspondant.

void mainWindowSolectrom::slotGererTableBrute()
{
    //Si la fenetre de gestion de la table brute n'est pas affichée, alors on l'affiche
    if(! intTemoinTableBruteAfficher)
    {
        //On crée la fenetre facture
        maFenetreGestionTableBrute = new fen_gestion_table_brute(db);
        maFenetreGestionTableBrute->setObjectName("nameTableBrute");
        maFenetreGestionTableBrute->setWindowFlags(Qt::WindowCloseButtonHint);
        //On l'ajoute à la zone centrale mdi
        mdiArea->addSubWindow(maFenetreGestionTableBrute);
        //On l'affiche
        maFenetreGestionTableBrute->show();
        //On connecte son signale personalisé de fermeture de fenetre avec le slot de fermeture de la fenetre "maFenetreGestionTableBrute"
        QObject::connect(maFenetreGestionTableBrute, SIGNAL(signalFermerFenetreBrute(QWidget*)), this, SLOT(slotFenetreFermer(QWidget*)));

        actionTableBrute->setEnabled(false);
    }
}



quand je déroule le menu et que je clique sur l'action actionTableBrute j'affiche maFenetreGestionTableBrute
et je rend inactive l'action


actionTableBrute->setEnabled(false);



quand je fermer avec le bouton fermer que j'ai implémenté et que j'ai relié à un slot personalisé, que voici


void mainWindowSolectrom::slotFenetreFermer(QWidget *maFenetreAFermer)
{
    //On supprime la fentre facturation pour éviter la fuite de mémoire
    maFenetreAFermer->deleteLater();
    if(maFenetreAFermer->objectName() == "nameTableGenerale")
        actionTableGenerale->setEnabled(true);
    else if(maFenetreAFermer->objectName() == "nameTableBrute")
        actionTableBrute->setEnabled(true);

    //Et on ferme la fenêtres active de la zone centrale MDI
    mdiArea->closeActiveSubWindow();
}



je rend actif l'action Code : C++ - Sélectionner


actionTableBrute->setEnabled(true);


mais quand je ferme avec la croix de fermeture de la fenêtre l'action reste toujours inactive, c'est-à-dire qu'il ne passe pas par le slot de fermeture.
si vous avez une idée SVP
Merci d'avance
A voir également:

3 réponses

Char Snipeur Messages postés 9696 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 297
6 nov. 2012 à 08:29
Salut.
Premièrement, est-ce que le signal est bon ? Est-il envoyé ?
je mettrai le deleteLater à la fin de la fonction, voire même, je mettrais directement un "delete ma FenetreAFermer, partant du principe que tu l'a créer avec un new et qu'à chaque new doit correspondre un delete.
0
Mourad2009B Messages postés 100 Date d'inscription lundi 23 août 2010 Statut Membre Dernière intervention 7 juillet 2023
8 nov. 2012 à 16:58
Merci à tous pour vos réponses
en faite j'ai trouvé la fonction qu'il me faut
Bonjour !

Quand l'utilisateur clique sur la croix de fermeture, c'est la fonction

    void QWidget::closeEvent ( QCloseEvent * event ) [virtual protected]  



qui est appelée.
par contre, J'ai encore une question SVP, personne n'arrive à me donner une solution

j'ai créé une fenêtre MDI, "fenetre-principale", ensuite j'ai créé une fenêtre fille "facturation" qui hérite de "QDialog"
je l'instancie et je la rajoute à la MDI

    //On crée la fenetre facture  
        maFenetreFacturation = new fenetre_facturation(this);  
        //On l'ajoute à la zone centrale mdi  
        mdiArea->addSubWindow(maFenetreFacturation);  
        maFenetreFacturation->setWindowFlags(Qt::WindowMaximizeButtonHint | Qt::WindowCloseButtonHint);  
        maFenetreFacturation->setFixedSize(845, 600);  
        //On l'affiche  
        maFenetreFacturation->show();  



et là j'ai toujours la possibilité de modifier les dimensions de la fenêtre fille, alors que ce que je veux c'est de les rendre fixes.
merci d'avance pour votre aide.
0
Char Snipeur Messages postés 9696 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 297
9 nov. 2012 à 08:09
essai de voir du coté de sizePolicy.
0
Mourad2009B Messages postés 100 Date d'inscription lundi 23 août 2010 Statut Membre Dernière intervention 7 juillet 2023
19 nov. 2012 à 15:58
ça ne donne rien
mais merci comme même
0
Utilisateur anonyme
7 nov. 2012 à 21:09
A mon humble avis, le soucis vient du signal, et non du slot a première vue.
0
Mourad2009B Messages postés 100 Date d'inscription lundi 23 août 2010 Statut Membre Dernière intervention 7 juillet 2023
19 nov. 2012 à 15:54
c'est bon c'est résolu merci à tous
0