Bonjour. Après quelques recherches sur le sujet, je ne vis que ce site : http://matthieu-brucher.developpez.c...t/signal-slot/.
Comment peut-on changer la valeur d'une variable surtout boléenne. Merci.
Bonjour. Après quelques recherches sur le sujet, je ne vis que ce site : http://matthieu-brucher.developpez.c...t/signal-slot/.
Comment peut-on changer la valeur d'une variable surtout boléenne. Merci.
Après quelques essais, cela donne :
Pourquoi cela ne marche-t-il pas ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part QObject::connect(bouton, SIGNAL(clicked()), qApp, SLOT(appuyer = true));
Sûrement parce que SLOT demande une fonction.
As-tu essayé ceci?
Fichier Exemple.hFichier Exemple.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
30
31
32 #include <QMainWindow> class QPushButton; class Exemple: public QMainWindow { Q_OBJECT public: Exemple(); // ... public slots: void s_clicked(); // ... private: QPushButton* button; char my_char; bool my_bool; int my_int; // ... };
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 #include "Exemple.h" #include <QApplication> #include <QPushButton> Exemple::Exemple(): QMainWindow(), my_char('\0'), my_bool(false), my_int(0) { button = new QPushButton("Hello!", this); connect(button, SIGNAL(clicked()), this, SLOT(s_clicked())); // ... } void Exemple::s_clicked() { my_char = 'c'; my_bool = true; my_int = 100; // ... }
Je pense qu'il faille que je change l'ordre.
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 #include "MaFenetre.h" #include <QNetworkReply> #include <QNetworkAccessManager> #include <QNetworkRequest> #include <QUrl> #include <QtNetwork> MaFenetre::MaFenetre() : QWidget() { bouton = new QPushButton("GO !", this); bouton->show(); QObject::connect(bouton, SIGNAL(clicked()), *appuyer, SLOT(changerDeValeur))); } bool MaFenetre::changerDeValeur() : QWidget() { appuyer = true; return appuyer; }
apparaît lorsque j'ai avancé mon code ainsi :
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 #ifndef MAFENETRE_H #define MAFENETRE_H #include <QPushButton> #include <QNetworkReply> #include <QNetworkAccessManager> #include <QNetworkRequest> #include <QUrl> #include <QtNetwork> class MaFenetre : public QWidget { public : MaFenetre(appuyer); bool changerDeValeur(); void connect(); private : QPushButton *bouton; bool m_appuyer; }; #endif // MAFENETRE_H
Pourquoi ?
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 #include "MaFenetre.h" #include <QNetworkReply> #include <QNetworkAccessManager> #include <QNetworkRequest> #include <QUrl> #include <QtNetwork> MaFenetre::MaFenetre(m_appuyer = false) : QWidget() { bouton = new QPushButton("GO !", this); bouton->show(); } bool MaFenetre::changerDeValeur() : QWidget() { appuyer = true; return appuyer; } void MaFenetre::methodeAppuyer() : QWidget() { QObject::connect(bouton, SIGNAL(clicked()), *appuyer, SLOT(changerDeValeur))); }
Désolé, non, je voulais réorganiser l'ordre des méthodes pour que le signal et le slot ne soient pas dans le constructeur afin de les appeler par une méthode déclarée(ou définie, je ne sais pas) avant.
Ok. Peux-tu me dire comment on fait en pratique ?
Rompons ! Je vous prie de me donner le modèle classique de ce schéma.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager