У меня есть проблема, когда я пытаюсь установить после простых связей
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()));
Это может быть успешно скомпилировано и excuted. Но два append
слоты кажутся не, работают. Я проверил руководство справки о QTextEdit
и существует общедоступный слот append
там. Я пропустил что-то? Справка ценилась бы!
К сожалению, вы не можете передавать пользовательские значения в свои слоты через QObject :: connect
(разрешена / правильно интерпретируется только информация о типе аргументов). Вместо этого создайте свой собственный слот, например
void MyWidget::mySliderChangedSlot(int newValue)
{
text->append("slider changed!");
}
и используйте
QObject :: connect (slider, SIGNAL (valueChanged (int)), pMyWidget, SLOT (mySliderChangedSlot (int)));
для достижения желаемого поведение.
Надеюсь, это поможет.
Что именно вы пытаетесь сделать? Это теперь работает, потому что вы подключаете сигнал, который имеет параметр int, к слоту со строковым параметром для одного, другая вещь заключается в том, что слоты сигнала, где они не предназначены для такого рода использования, вы просто говорите, что функция подключена, и они передают параметры между ними, вы не передаете значения самостоятельно, Вы неправильно их используете, прочитайте документацию по адресу http://doc.trolltech.com/4.6/signalsandslots.html для корректных примеров использования.