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 :

Crash lors de la fermeture d'une fenêtre


Sujet :

Qt

  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2020
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2020
    Messages : 1
    Par défaut Crash lors de la fermeture d'une fenêtre
    Bonjour,

    Je suis en train de coder une fenêtre de login pour une application. Celle-ci se lance correctement et fonctionne normalement. Le problème intervient à la fin quand je ferme la fenêtre. On me dit alors que le programme s'est terminé subitement, que le processus a fini d'une manière forcée et que mon programme a crash.

    J'ai donc cherché à isoler dans mon code ce qui pourrait provoquer cela et je suis tombé sur le QSpinBox "myExternalPort" (qui est est le dernier élément que j'ai rajouté dans ma classe). Mon Code ci-dessous :

    mon .cpp pour ma classe de login:

    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
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
     
    myLoginWindow::myLoginWindow()
    {
     
        setWindowTitle("Login");
     
        /* Layout */
        QGridLayout *layoutPrincipal = new QGridLayout;
     
     
        /*Labels*/
     
        QLabel *myFirstTitle = new QLabel(this);
        QLabel *mySecondTitle = new QLabel(this);
        QLabel *myLabel = new QLabel(this);
        QLabel *mySecondLabel = new QLabel(this);
        QLabel *myThirdLabel = new QLabel(this);
        QLabel *myLabelForExternalIP = new QLabel(this);
        QLabel *myLabelForPort = new QLabel(this);
     
        /* Fonts */
     
        QFont myFontForTitle("Arial", 14);
     
        /* Colors */
     
        QPalette pal;
        pal.setColor(QPalette::Background, Qt::gray);
        setAutoFillBackground(true);
        setPalette(pal);
     
        /* InputLine */
     
        myLineForPseudo = new QLineEdit;
        myLineForIPAddress = new QLineEdit;
        myButtonToContinue = new QPushButton;
     
        /* QSpinBox */
     
        myIntegerInput = new QSpinBox;
        //myExternalPort= new QSpinBox;
     
        /* Configuration des QSpinBox */
     
        myIntegerInput->setMaximum(9999);
        myIntegerInput->setMinimum(9990);
        myIntegerInput->setValue(9999);
     
        /*myExternalPort->setMaximum(9999);
        myExternalPort->setMinimum(9990);
        myExternalPort->setValue(9999);*/
     
     
        /* texte dans les labels */
        pseudo = "";
     
        myLabel->setText("Pseudo : ");
        mySecondLabel->setText("Adresse IP sur laquelle écouter : ");
        myThirdLabel->setText("Port sur lequel écouter : ");
     
        myFirstTitle->setText("<b> Informations sur l'utilisateur </b>");
        myFirstTitle->setFont(myFontForTitle);
     
        mySecondTitle->setText("<b> Informations sur les utilisateurs extérieurs </b>");
        mySecondTitle->setFont(myFontForTitle);
     
        myLabelForExternalIP->setText("Adresse IP à laquelle se connecter : ");
     
        myLabelForPort->setText("Port sur lequel se connecter : ");
     
     
        /* texte dans les boutons */
     
        myButtonToContinue->setText("Ok");
     
        /* connexion des signaux aux slots */
     
        connect(myButtonToContinue, SIGNAL(clicked()), this, SLOT(endInput()));
        connect(myLineForPseudo, SIGNAL(returnPressed()), this, SLOT(endInput()));
        connect(this, SIGNAL(endPressed()), qApp, SLOT(quit()));
     
     
        /* Ajout des widgets au layout */
     
     
        layoutPrincipal->addWidget(myFirstTitle, 0, 0, 1, 2);
        layoutPrincipal->addWidget(myLabel,1 , 0);
        layoutPrincipal->addWidget(myLineForPseudo, 1 , 1);
        layoutPrincipal->addWidget(mySecondLabel, 2, 0);
        layoutPrincipal->addWidget(myLineForIPAddress, 2, 1);
        layoutPrincipal->addWidget(myThirdLabel, 3, 0);
        layoutPrincipal->addWidget(myIntegerInput, 3, 1);
        layoutPrincipal->addWidget(mySecondTitle, 4, 0, 1, 2);
        layoutPrincipal->addWidget(myLabelForExternalIP, 5, 0);
        layoutPrincipal->addWidget(myLabelForPort, 6, 0);
        //layoutPrincipal->addWidget(myExternalPort, 6, 1);
        layoutPrincipal->addWidget(myButtonToContinue, 7, 0, 1, 2);
     
     
        /* Affichage layout */
     
        setLayout(layoutPrincipal);
     
     
    }
     
     
    void myLoginWindow::endInput(){
        pseudo = myLineForPseudo->text();
        if(!pseudo.isEmpty()){
            emit endPressed();
        }
    }
     
    QString myLoginWindow::getPseudo(){
        return pseudo;
    }
    Le .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
     
    class myLoginWindow : public QWidget
    {
        Q_OBJECT
     
    public:
        myLoginWindow();
        QString getPseudo();
     
    public slots:
        void endInput();
     
     
     
    signals:
        void endPressed();
     
     
    private:
        QLineEdit *myLineForPseudo;
        QLineEdit *myLineForIPAddress;
        QString pseudo;
        QPushButton *myButtonToContinue;
        QSpinBox *myIntegerInput;
        QSpinBox *myExternalPort;
    };
    Si "myExternalPort" est commenté dans le .cpp , tout va bien, cela se ferme bien à la fin. Sinon, si je décommente les lignes où celui-ci est concerné, l'application ne se ferme pas correctement. J'ai aussi utilisé le debugger pour voir d'où cela pouvait venir et à la fin du programme, il me dit que :

    "The inferior stopped because it triggered an exception.

    Stopped in thread 0 by: Exception at 0x160a74452c0, code: 0xc0000005: write access violation at: 0x160a74452c0, flags=0x0 (first chance)." en me montrant du code assembleur ce qui ne m'aide pas vraiment.

    Je vous remercie d'avance pour toute réponse qui pourrait m'aider à résoudre ce problème.

  2. #2
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 122
    Billets dans le blog
    148
    Par défaut
    Bonjour,

    en me montrant du code assembleur ce qui ne m'aide pas vraiment.
    Dans ce cas là, il faut remonter la liste d'appels (stack trace) grâce au débogueur.
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

Discussions similaires

  1. Réponses: 2
    Dernier message: 29/03/2007, 11h26
  2. Réponses: 5
    Dernier message: 15/01/2007, 10h45
  3. Réponses: 3
    Dernier message: 24/01/2006, 11h27
  4. Evènement sur le body lors de la fermeture d'une fenêtre
    Par Yaz dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 23/09/2005, 17h54
  5. Arrêter un ttmt en cours, lors de la fermeture d'une fenêtre
    Par teska dans le forum Bases de données
    Réponses: 2
    Dernier message: 20/12/2004, 14h08

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