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 :

Erreur de segmentation et changement de fenêtre


Sujet :

Qt

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Etudiant en informatique
    Inscrit en
    Novembre 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Etudiant en informatique

    Informations forums :
    Inscription : Novembre 2014
    Messages : 4
    Points : 5
    Points
    5
    Par défaut Erreur de segmentation et changement de fenêtre
    Bonjour a tous, je travaille sur un petit parser de logs et j'ai actuellement beaucoup de soucis à imbriquer plusieurs interfaces graphiques dans le même programme. Ici, sUi , mUi et cUi correspondent à différents fichiers .Ui construis via Qt Designer.
    Le programme n'a aucun soucis a commencer sur l'Ui de départ(cUi) , puis a passer sur l'Ui principale (mUi) , de même pour sUi. Le problème survient quand je veux revenir en arrière via mes boutons disconnect ou home , j'ai un segmentation fault et quand je regarde la composition du widget concerné il est marqué "<inaccessible>" dans la colonne valeur (d'où le segmentation fault ).

    J'avoue être un peu à court de solution et je me demande si je passe a côté de quelque chose ou si je gère mal la gestion de plusieurs .ui (je n'ai pas trouvé grand chose concernant ceci sur internet) et je suis ouvert a toute remarque de ce côté

    Voici mon code
    Fichier source:
    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
    #include "clogparser.h"
     
    cLogParser::cLogParser(QWidget *parent)
        : QMainWindow(parent)
    {
        //Setting widgets
        this->setFixedSize(700,500);
        mWidget = new(QWidget);
        cWidget = new(QWidget);
        sWidget = new(QWidget);
        mUi = new(Ui_mWidget);
        cUi = new(Ui_cWidget);
        sUi = new(Ui_sWidget);
        mUi->setupUi(mWidget);
        cUi->setupUi(cWidget);
        sUi->setupUi(sWidget);
        setCentralWidget(cWidget);
     
     
     
        QObject::connect(sUi->disconnectButton,SIGNAL(clicked(bool)), this , SLOT(showConnectionUi()));
        QObject::connect(mUi->disconnectButton,SIGNAL(clicked(bool)), this , SLOT(showConnectionUi()));
        QObject::connect(cUi->connectionButton,SIGNAL(clicked(bool)), this , SLOT(showMainUi()));
        QObject::connect(sUi->homeButton,SIGNAL(clicked(bool)), this , SLOT(showMainUi()));
        QObject::connect(mUi->splitButton,SIGNAL(clicked(bool)), this , SLOT(showSplitterUi()));
    }
     
    cLogParser::~cLogParser()
    {
        delete mUi;
        delete cUi;
        delete sUi;
    }
     
    void cLogParser::showMainUi()
    {
        setCentralWidget(mWidget);
    }
     
    void cLogParser::showConnectionUi()
    {
        setCentralWidget(cWidget);
    }
     
    void cLogParser::showSplitterUi()
    {
        setCentralWidget(sWidget);
    }
    Fichier header:
    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
    #ifndef CLOGPARSER_H
    #define CLOGPARSER_H
     
    #include <QMainWindow>
     
    #include "ui_connection.h"
    #include "ui_main.h"
    #include "ui_splitter.h"
     
    class cLogParser : public QMainWindow
    {
        Q_OBJECT
     
    public:
        cLogParser(QWidget *parent = 0);
        ~cLogParser();
     
        QWidget *mWidget;
        QWidget *cWidget;
        QWidget *sWidget;
     
     
    public slots:
        void showMainUi();
        void showConnectionUi();
        void showSplitterUi();
    private:
        Ui_mWidget *mUi;
        Ui_cWidget *cUi;
        Ui_sWidget *sUi;
    };
     
    #endif // CLOGPARSER_H
    Merci

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


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

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

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 894
    Points : 219 533
    Points
    219 533
    Billets dans le blog
    124
    Par défaut
    Bonjour,

    Si c'est marqué "undefined", c'est que le pointeur a été supprimé au cours de l'exécution. Je vous conseillerai donc de placer des points d'arrêts pour comprendre pourquoi une telle destruction de vos éléments arrivent alors que vous en avez encore besoin.

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Etudiant en informatique
    Inscrit en
    Novembre 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Etudiant en informatique

    Informations forums :
    Inscription : Novembre 2014
    Messages : 4
    Points : 5
    Points
    5
    Par défaut
    Bonjour, merci de votre réponse J'ai résolu mon problème depuis, en utilisant justement des points d'arrêt. Il s'avère que la fonction setCentralWidget rend le widget inutilisable j'ai donc déplacé la définition du widget, de l'ui et des connections dans la fonction correspondant au widget et cela fonctionne très bien ! Je poste le code si jamais

    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
    void cLogParser::showMainUi()
    {
        mWidget = new(QWidget);
        mUi->setupUi(mWidget);
        QObject::connect(mUi->disconnectButton,SIGNAL(clicked(bool)), this , SLOT(showConnectionUi()));
        QObject::connect(mUi->splitButton,SIGNAL(clicked(bool)), this , SLOT(showSplitterUi()));
        setCentralWidget(mWidget);
    }
     
    void cLogParser::showConnectionUi()
    {
        cWidget = new(QWidget);
        cUi->setupUi(cWidget);
        QObject::connect(cUi->connectionButton,SIGNAL(clicked(bool)), this , SLOT(showMainUi()));
        setCentralWidget(cWidget);
    }
     
    void cLogParser::showSplitterUi()
    {
        sWidget = new(QWidget);
        sUi->setupUi(sWidget);
        QObject::connect(sUi->homeButton,SIGNAL(clicked(bool)), this , SLOT(showMainUi()));
        QObject::connect(sUi->disconnectButton,SIGNAL(clicked(bool)), this , SLOT(showConnectionUi()));
        setCentralWidget(sWidget);
    }

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


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

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

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 894
    Points : 219 533
    Points
    219 533
    Billets dans le blog
    124
    Par défaut
    J'imagine que le setCentralWidget clean le widget précédemment en place.

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

Discussions similaires

  1. Erreurs de segmentation !
    Par anti-conformiste dans le forum Applications et environnements graphiques
    Réponses: 16
    Dernier message: 18/10/2005, 11h11
  2. Erreur de segmentation
    Par Trunks dans le forum C
    Réponses: 3
    Dernier message: 06/10/2005, 18h28
  3. Erreur de segmentation (Inconnue)
    Par Dark-Meteor dans le forum C
    Réponses: 5
    Dernier message: 08/09/2005, 13h42
  4. [Dev-C++] Erreur de segmentation...
    Par sas dans le forum Dev-C++
    Réponses: 11
    Dernier message: 26/03/2005, 14h25
  5. erreur de segmentation
    Par transistor49 dans le forum C++
    Réponses: 10
    Dernier message: 15/03/2005, 11h18

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