[英]No such Slot/Signals (Qt)
對象::連接:沒有這樣的信號RollsRoyceTab :: signal_aValueChange(int aValue)??????
我有
class RollsRoyceTab : public QWidget
{
Q_OBJECT
public:
RollsRoyceTab(QWidget *parent = 0);
public slots:
void aValueChange(int);
void bValueChange(int);
void cValueChange(int);
void rrValuesHolder(int aValue, int bValue, int cValue);
signals:
void signal_aValueChange(int aValue);
void signal_bValueChange(int bValue);
void signal_cValueChange(int cValue);
private:
.........
int aValue, bValue, cValue;
};
............
connect(this,SIGNAL(signal_aValueChange(int aValue)),this,SLOT(rrValuesHolder(int aValue, int bValue, int cValue)));
}
void RollsRoyceTab::aValueChange(int aValue)
{
lcdAL->display(aValue);
lcdAR->display(100 - aValue);
emit signal_aValueChange(aValue);
}
void RollsRoyceTab::rrValuesHolder(int aValue, int bValue, int cValue)
{
qDebug() << aValue;
qDebug() << bValue;
qDebug() << cValue;
}
並連接(...... this,SLOT(rrValuesHolder(int aValue,int bValue,int cValue)))); 還是只需要寫一個值SLOT(rrValuesHolder(int aValue))?
首先:QObject :: connect()中的信號和插槽應該沒有變量名稱。
第二:您無法將信號與帶有三個參數的SLOT連接到一個參數。 SIGNAL的自變量不得少於SLOT。
它應該用於例如:
connect(this,SIGNAL(signal_aValueChange(int)),this,SLOT(rrValuesHolder(int)));
這只是對此的解釋。 如果您發出帶有一個自變量的信號(例如QString),插槽將如何知道另外兩個自變量? 對我來說,這是合乎邏輯的。
“ SIGNAL()宏的自變量不得少於傳遞給SLOT()宏的簽名。
所有這些都會起作用:
connect(sender, SIGNAL(destroyed(QObject*)), this, SLOT(objectDestroyed(Qbject*)));
connect(sender, SIGNAL(destroyed(QObject*)), this, SLOT(objectDestroyed()));
connect(sender, SIGNAL(destroyed()), this, SLOT(objectDestroyed()));
這不起作用:
connect(sender, SIGNAL(destroyed()), this, SLOT(objectDestroyed(QObject*)));
我相信你應該把value SLOT(rrValuesHolder(int))
叫做value SLOT(rrValuesHolder(int))
參考: http : //qt-project.org/doc/qt-4.8/signalsandslots.html
編輯:Blood包括我忽略的另一條信息,Signals和Slots應該沒有變量名地連接!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.