IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Qt Discussion :

Problème de fermeture de l'application


Sujet :

Qt

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    264
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 264
    Par défaut Problème de fermeture de l'application
    Bonjour,

    J'ai un problème avec la fermeture et la connexion entre met deux fenêtres...

    Voilà j'ai une fenêtre principale, qui va ouvrir un sous fenêtre QDialog.

    Donc ce qui devrait normalement ce faire c'est :
    Lancement de ma fenêtre principale => clic sur un bouton, ouvre la seconde fenêtre.
    Si je quitte la première fenêtre logiquement le programme se ferme entièrement même si les sous fenêtre sont encore ouverte.

    Si je clique sur la croix du ma fenêtre secondaire là ça marche, la fenêtre se ferme mais si je clique sur la croix de la fenêtre principale la par contre ça ferme la fenêtre mais pas vraiment... L'application reste dans le gestionnaire de tache... donc en temps que processus...

    Voilà je cherche donc pourquoi j'ai cette erreur mais je vois pas...

    listeur.cpp (fenêtre principale)
    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
     
    #include "listeur.h"
     
    FenListeur::FenListeur(QMainWindow *parent) : QMainWindow(parent)
    {
        setupUi(this);
        setFixedSize(504,306);
        setWindowTitle(NOMLOGICIEL);
     
        Button_infos->setText("Infos");
     
        connect(Button_infos, SIGNAL(clicked()), this, SLOT(infos_film()));
    }
     
    void FenListeur::infos_film()
    {
        FenInfos *fenInfos = new FenInfos(comboBox_film->model(), comboBox_film->currentIndex(), 0);
        fenInfos->setAttribute(Qt::WA_DeleteOnClose);
        fenInfos->show();
    }
    listeur.h
    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
     
    #ifndef LISTEUR_H
    #define LISTEUR_H
     
    #include <QPlastiqueStyle>
    #include <QSharedMemory>
    #include <QDesktopServices>
    #include <QFileDialog>
    #include <QDirIterator>
    #include <QDebug>
     
    #include "ui_listeur.h"
    #include "constante.h"
    #include "infos_film.h"
     
    namespace Ui
    {
        class FenListeur;
    }
     
    class FenListeur : public QMainWindow, private Ui::FenListeur
    {
        Q_OBJECT
     
        public:
            FenListeur(QMainWindow *parent = 0);
     
        private slots:
            void infos_film();
    };
     
    #endif // LISTEUR_H
    infos_film.cpp (fenêtre secondaire)
    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
     
    #include "infos_film.h"
     
    FenInfos::FenInfos(QAbstractItemModel *model, int currentIndex, QWidget *parent) : QDialog(parent), mapper(new QDataWidgetMapper(this))
    {
        QVBoxLayout *layout = new QVBoxLayout();
        QLabel *label_titre = new QLabel("Chargement en cours...");
        layout->addWidget(label_titre);
        setLayout(layout);
     
        mapper->setModel(model);
        mapper->setCurrentIndex(currentIndex);
     
        telechargement("avatar");
    }
     
    void FenInfos::affichage(const QList<QString> &infos)
    {
        if(infos.isEmpty())
        {
            QMessageBox::information(this, "Erreur !", "Aucun film n'a été sélectionné, aucun résumé possible !");
        }
     
        QVBoxLayout *layout = new QVBoxLayout();
     
        QLabel *label_image = new QLabel(this);
        label_image->setPixmap(QPixmap("image_film.jpg"));
        layout->addWidget(label_image);
     
        QLabel *label_titre = new QLabel(infos[0]);
        layout->addWidget(label_titre);
     
        QLabel *label_date_sortie = new QLabel(infos[1]);
        layout->addWidget(label_date_sortie);
     
        QLabel *label_realise_par = new QLabel(infos[2]);
        layout->addWidget(label_realise_par);
     
        QLabel *label_titre_original = new QLabel(infos[3]);
        layout->addWidget(label_titre_original);
     
        QLabel *label_genre = new QLabel(infos[4]);
        layout->addWidget(label_genre);
     
        QLabel *label_duree = new QLabel(infos[5]);
        layout->addWidget(label_duree);
     
        QLabel *label_annee_production = new QLabel(infos[6]);
        layout->addWidget(label_annee_production);
     
        QLabel *label_distributeur = new QLabel(infos[7]);
        layout->addWidget(label_distributeur);
     
        QTextBrowser *textbrowser_synopsis = new QTextBrowser;
        textbrowser_synopsis->setHtml(infos[8]);
        layout->addWidget(textbrowser_synopsis);
     
        setLayout(layout);
    }
    infos_film.h
    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
    23
    24
    25
    26
    27
    28
    29
     
    #ifndef INFOS_FILM_H
    #define INFOS_FILM_H
     
    #include <QVBoxLayout>
    #include <QLabel>
    #include <QTextBrowser>
    #include <QNetworkReply>
    #include <QXmlStreamReader>
    #include <QMessageBox>
    #include <QProgressBar>
    #include <QDataWidgetMapper>
     
    class FenInfos : public QDialog
    {
        Q_OBJECT
     
        public:
            FenInfos(QAbstractItemModel *model, int currentIndex, QWidget *parent = 0);
            QProgressBar *progressBar;
     
        private:
            QDataWidgetMapper *mapper;
     
        private slots:
            void affichage(const QList<QString> &infos);
    };
     
    #endif // INFOS_FILM_H
    PS : Je dois mal le faire mais j'aurais aussi aimé faire en sorte de créer un petit QLabel avec dedans "Chargement en cours..." et dès qu'on arrive au slot affichage, on affiche le vrai contenu de la fenêtre mais, j'ai pas le contenu de la fenêtre j'ai du début à la fin la QLabel "Chargement en cours..." sans jamais voir le contenu graphique du slot affichage

    Merci et bonne journée

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 58
    Par défaut
    Je pense que la solution est :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FenInfos *fenInfos = new FenInfos(comboBox_film->model(), comboBox_film->currentIndex(), this);

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    264
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 264
    Par défaut
    Non ça change rien... :s

  4. #4
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par défaut
    Salut.
    En principe qt ferme l'appli une fois toutse les fenêtres fermées.
    Si tout est fermé mais que le process non, y as un problème.
    • Quelle version de Qt utilise tu?
    • As tu des threads?

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    264
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 264
    Par défaut
    J'utilise la dernière version de Qt soit la 4.6 et non je n'utilise pas de threads

    Mais de toute façon il y a un souci vu que normalement quand on quitte la fenêtre principale toute le programme se ferme et la non...

  6. #6
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par défaut
    Citation Envoyé par austin.fla Voir le message
    Mais de toute façon il y a un souci vu que normalement quand on quitte la fenêtre principale toute le programme se ferme et la non...
    ca c'est normale.
    En principe qt ferme l'appli une fois toutes les fenêtres fermées.
    EN plus il n'y as pas de notion de fenêtre principale/secondaire.

    Si tu veut forcer la fermeture, tu peut utilise QApplication::exit();
    http://qt.developpez.com/doc/latest/...lication/#exit

    Ce qui n'est pas normale, c'est que le process ne ferme quand il n'y as plus fenêtre.


    tu peut essayer de voir avec ceci. on ne sait jamais
    http://qt.developpez.com/doc/latest/...dowclosed-prop

    Peut tu montrer le main.cpp?


    PS : Je dois mal le faire mais j'aurais aussi aimé faire en sorte de créer un petit QLabel avec dedans "Chargement en cours..." et dès qu'on arrive au slot affichage, on affiche le vrai contenu de la fenêtre mais, j'ai pas le contenu de la fenêtre j'ai du début à la fin la QLabel "Chargement en cours..." sans jamais voir le contenu graphique du slot affichage
    regarde http://qt.developpez.com/doc/latest/qsplashscreen/ c'est fait pour

    Plus d’explications dans les cours et tutoriels pour apprendre Qt et la FAQ Qt.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. problème de fermeture de l'application
    Par allanibu dans le forum Langage
    Réponses: 5
    Dernier message: 15/09/2008, 12h03
  2. Problème de fermeture de l'application
    Par devat27 dans le forum Langage
    Réponses: 9
    Dernier message: 20/03/2008, 12h05
  3. [VB2005] Problème de fermeture de l'application
    Par exclusif dans le forum Windows Forms
    Réponses: 2
    Dernier message: 14/08/2006, 15h32
  4. [C#] problème de fermeture d'une application
    Par padodanle51 dans le forum Windows Forms
    Réponses: 4
    Dernier message: 30/05/2006, 14h07
  5. Problème de fermeture de l'application
    Par SkyDev dans le forum Langage
    Réponses: 2
    Dernier message: 16/06/2004, 02h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo