Bonjour,
Je bloque sur ce problème depuis un petit moment déjà. J'ai essayé de voir dans les forums mais n'ai toujours pas compris mon erreur.
J'ai une classe Dialog_cfgGraph qui est une deuxième fenêtré qui contient un CheckBox. J'essaie de faire interagir cette fenêtre avec la fenêtre principale.
Voici son implémentation:
dialog_cfggraph.h:
dialog_cfggraph.cpp:
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 DIALOG_CFGGRAPH_H #define DIALOG_CFGGRAPH_H #include <QDialog> namespace Ui { class Dialog_cfgGraph; } class Dialog_cfgGraph : public QDialog { Q_OBJECT public: explicit Dialog_cfgGraph(QWidget *parent = 0); ~Dialog_cfgGraph(); private slots: void on_checkBox_inflaction_stateChanged(int arg1); public: signals: void checkBox_inflation_stateChanging(int state); private: Ui::Dialog_cfgGraph *ui; }; #endif // DIALOG_CFGGRAPH_H
Dans la classe de ma fenêtre principale j'ai un pointeur de cet objet:
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 "dialog_cfggraph.h" #include "ui_dialog_cfggraph.h" Dialog_cfgGraph::Dialog_cfgGraph(QWidget *parent) : QDialog(parent), ui(new Ui::Dialog_cfgGraph) { ui->setupUi(this); } Dialog_cfgGraph::~Dialog_cfgGraph() { delete ui; } void Dialog_cfgGraph::on_checkBox_inflaction_stateChanged(int arg1) //slot généré automatiquement avec QT { emit checkBox_inflation_stateChanging(arg1); //émet mon slot public récupérable par la classe MainWindow }
que j’instancie dans le constructeur de la fenêtre principale:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 class MainWindow : public QMainWindow { Q_OBJECT public: explicit MainWindow(QWidget *parent = 0); ~MainWindow(); Dialog_cfgGraph *cfg_Graph_Win; ...
Si dessus en rouge, j'ai connecté le signal checkBox_inflation_stateChanging de cfg_Graph_Win au slot on_CGDWin_InflaCheckBox_stateChanged de la 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 MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); ... cfg_Graph_Win = new Dialog_cfgGraph(this); connect( cfg_Graph_Win, SIGNAL( checkBox_inflation_stateChanging(int state) ), this, SLOT( on_CGDWin_InflaCheckBox_stateChanged(int arg1) ) ); cfg_Graph_Win->show(); }
Quand l’application s’exécute le message suivante apparait en sortie de l'application:
Quelqu'un comprend pourquoi j'ai ce message ?QObject::connect: No such signal Dialog_cfgGraph::checkBox_inflation_stateChanging(int state) in ..\Prog\mainwindow.cpp:94
QObject::connect: (sender name: 'Dialog_cfgGraph')
QObject::connect: (receiver name: 'MainWindow')
Autre truc bizarre, code "public signals:" ne compile pas je suis oblige de mettre "public: signals:" alors que "private slots:" passe très bien.
Partager