2010-07-05 138 views
1

我有一個問題,當我試圖讓下面的簡單連接爲什麼append Slot不起作用?

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.But兩個append插槽似乎並不work.I've檢查幫助手冊約QTextEdit和有一個公共插槽append there.have我錯過了什麼?幫助將不勝感激!

回答

2

不幸的是,您無法通過QObject::connect將自定義值傳遞給您的插槽(只允許/正確解釋參數的類型信息)。相反,創建自己的插槽,像

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

,並使用

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

,以達到你想要的行爲。

我希望有幫助。

+0

感謝您的信息。 – Young 2010-07-05 08:20:57

0

你究竟想要做什麼?這現在的工作方式,因爲你連接一個信號有一個int參數的插槽與一個字符串參數爲一,另一件事是信號插槽不意味着這種用法,你只是說這個功能是conected和他們將參數傳遞給它們,而不是自己傳遞值,但您沒有正確使用它們,請閱讀http://doc.trolltech.com/4.6/signalsandslots.html的文檔以獲取正確的使用示例。