Bonjour les gens,
Je suis débutant sous Qt, j'ai commencé cette semaine.
Pour m'entrainer, j'ai voulu créer un minuteur, qui au bout de 10 secondes, affiche un message, comme quoi le temps est écoulé.
Pas de problème jusque là.
Je me suis dit que ça serait plus pratique de pouvoir changer le temps
...
Et donc, je fais mon petit slot, tout ça, mais quand je compile, une fenêtre windows s'affiche en disant le message "le programme a cessé de fonctionner".
J'ai mis en commentaire des lignes, pour chercher se qui me faisait cet effet,
j'ai tenté en mode débogage, puis j'en suis arrivé là:
compteur.cpp:
compteur.h:
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 #include "compteur.h" CptWs::CptWs() : QWidget() { setFixedSize(210, 110); m_timemn = 10; // C'est à cause de cette variable m_boutonDemarrer = new QPushButton("Démarrer le compteur", this); m_boutonDemarrer->move(40, 25); m_timer = new QTimer(this) m_timer->setSingleShot(true); m_timer->setInterval(m_timemn * 1000); // ici, quand je met 10000 au lieu de "m_timemn * 1000", pas de problèmes QObject::connect(m_boutonDemarrer, SIGNAL(clicked()), m_timer, SLOT(start())); QObject::connect(m_boutonDemarrer, SIGNAL(clicked()), this, SLOT(desactiveBouton())); QObject::connect(m_timer, SIGNAL(timeout()), this, SLOT(msgTpsTermine())); QObject::connect(m_timer, SIGNAL(timeout()), this, SLOT(activeBouton())); } void CptWs::msgTpsTermine() { QMessageBox::warning(this, "Temps écoulé", "Le temps de 10 mn s'est écoulé !"); } void CptWs::desactiveBouton() { m_boutonDemarrer->setEnabled(false); } void CptWs::activeBouton() { m_boutonDemarrer->setEnabled(true); }
Quand je n'utilise pas la variable "m_timemn", je n'ai pas de problèmes.
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 #ifndef COMPTEUR_H #define COMPTEUR_H #include <QApplication> #include <QWidget> #include <QPushButton> #include <QMessageBox> #include <QInputDialog> #include <QTimer> class CptWs : public QWidget { Q_OBJECT public: CptWs(); public slots: void msgTpsTermine(); void desactiveBouton(); void activeBouton(); private: int m_timemn; // Bug à cause de celle-ci QPushButton *m_boutonDemarrer; QTimer *m_timer; }; #endif // COMPTEUR_H
Quand je l'utilise, deux cas:
- Quand je ne modifie rien, l'OS ferme mon programme avec le message que j'ai signalé plus haut
- En mode 'Debug', il m'arrête devant " QMessageBox::warning(this, "...", "..."); " et me mettant ce message :
Ce serait donc le couple QMessageBox::warning / int m_timemn qui me ferait boguer, car si je met en commentaire la ligne 25 de mon .cpp, pas de message (normal) et pas de problème...
Bref, je suis bloqué.
Je remercie d'avance tous ceux qui m'aideront.
Partager