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 :mouarf: ).
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:
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:
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 :)