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:
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
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); }
Merci
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![]()
Partager