La classe sous QT creator
Résolu
Bonjour,
Je promgramme sous QT creator sous ubuntu
J'essaye de créer mon propres slot de tel sorte qu'on changeant la valeur du slider la dimension de ma fenetre change. voici ma classe :
#include "creationpropreslot.h"
void CreationpropreSLOT::changerLargeur(int largeur)
{
setFixedSize(largeur, 100);
}
CreationpropreSLOT::CreationpropreSLOT()
{
m_slider = new QSlider(Qt::Horizontal, this);
m_slider->setGeometry(50, 80, 100, 40);
QObject::connect(m_slider, SIGNAL(valueChanged(int)), this, SLOT(changerLargeur(int)));
}
La compilation passe sans problème or lors de l'execution j'ai le message suivant :
"Object::connect: No such slot QWidget::changerLargeur(int) in creationpropreslot.cpp:16"
or moi j'ai bien mis la fonction "changerLargeur" au début de mon fichier creationpropreslot.cpp
SVP sauriez vous comment je dois faire ?
Je promgramme sous QT creator sous ubuntu
J'essaye de créer mon propres slot de tel sorte qu'on changeant la valeur du slider la dimension de ma fenetre change. voici ma classe :
#include "creationpropreslot.h"
void CreationpropreSLOT::changerLargeur(int largeur)
{
setFixedSize(largeur, 100);
}
CreationpropreSLOT::CreationpropreSLOT()
{
m_slider = new QSlider(Qt::Horizontal, this);
m_slider->setGeometry(50, 80, 100, 40);
QObject::connect(m_slider, SIGNAL(valueChanged(int)), this, SLOT(changerLargeur(int)));
}
La compilation passe sans problème or lors de l'execution j'ai le message suivant :
"Object::connect: No such slot QWidget::changerLargeur(int) in creationpropreslot.cpp:16"
or moi j'ai bien mis la fonction "changerLargeur" au début de mon fichier creationpropreslot.cpp
SVP sauriez vous comment je dois faire ?
2 réponses
-
Il ne suffit pas que la fonction existe.
Il faut qu'elle soit déclarée comme étant un 'slot' et que la macro 'Q_OBJECT' soit déclarée dans la classe.
Exemple:class UneClasse : public QWidget { Q_OBJECT ... public slots: void changerLargeur() { ...; } ... };Bonnecontinuation. -
Bonsoir,
Merci infiniment.
Cordialement