2010-07-05 6 views
1

J'ai un problème lorsque je tente de faire suite à des connexions simplespourquoi ajouter Slot ne fonctionne pas?

QSpinBox *spinBox = new QSpinBox; 
QSlider *slider = new QSlider(Qt::Horizontal); 
QTextEdit *text = new QTextEdit("Hello QT!"); 

QObject::connect(spinBox, SIGNAL(valueChanged(int)),slider, SLOT(setValue(int))); 
QObject::connect(slider, SIGNAL(valueChanged(int)),spinBox, SLOT(setValue(int))); 
QObject::connect(slider,SIGNAL(valueChanged(int)),text, SLOT(append("slider changed!"))); 
QObject::connect(spinBox,SIGNAL(valueChanged(int)),text, SLOT(append("spinbox changed!"))); 
QObject::connect(text,SIGNAL(textChanged()),spinBox,SLOT(clear())); 

Il peut être compilé et excuted.But les deux fentes append semblent pas avec succès work.I've vérifié le manuel d'aide sur QTextEdit et il y a une place publique append là.Avez-vous manqué quelque chose? Aide serait appréciée!

Répondre

2

Malheureusement, vous ne pouvez pas transmettre de valeurs personnalisées à vos emplacements via QObject::connect (seules les informations de type pour les arguments sont autorisées/interprétées correctement). Au lieu de cela, créez votre propre emplacement, quelque chose comme

void MyWidget::mySliderChangedSlot(int newValue) 
{ 
    text->append("slider changed!"); 
} 

et utiliser

QObject::connect(slider, SIGNAL(valueChanged(int)), pMyWidget, SLOT(mySliderChangedSlot(int)));

pour atteindre votre comportement souhaité.

J'espère que cela aide.

+0

Merci pour l'information. – Young

0

Qu'essayez-vous exactement de faire? Cela fonctionne maintenant parce que vous connectez un signal qui a un paramètre int à un emplacement avec un paramètre de chaîne pour l'un, l'autre chose est que les emplacements de signaux ne sont pas destinés à ce genre d'utilisation, vous dites simplement que la fonction est connectée et ils passent les paramètres entre eux vous ne passez pas les valeurs vous-même, vous ne les utilisez pas correctement lire la documentation au http://doc.trolltech.com/4.6/signalsandslots.html pour des exemples d'utilisation correcte.

Questions connexes