2013-03-11 93 views
0

Object :: connect:没有这样的信号RollsRoyceTab :: signal_aValueChange(int aValue) ??????没有这样的插槽/信号(Qt)

我有

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; 

} 

并连接(......此,SLOT(rrValuesHolder(INT安勤,INT bValue,INT cValue)));或者只需要写一个值SLOT(rrValuesHolder(int aValue))?

回答

3

第一:QObject :: connect()中的信号和插槽应该没有变量名称。

第二:不能用带三个参数的SLOT连接一个参数的信号。 SIGNAL的参数不能少于SLOT。

它应该是例如: -

connect(this,SIGNAL(signal_aValueChange(int)),this,SLOT(rrValuesHolder(int))); 

而且它只是解释说。如果你用一个参数发射信号(例如QString),slot如何知道其他两个参数是什么?对我来说这是合乎逻辑的。

+0

好的。 connect(this,SIGNAL(signal_aValueChange(int,int,int)),this,SLOT(rrValuesHolder(int,int,int)));发出signal_aValueChange(aValue,bValue,cValue); – 2013-03-11 19:16:28

0

“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))

和借鉴e:http://qt-project.org/doc/qt-4.8/signalsandslots.html

编辑:血液包括一个额外的信息,我忽略了,信号和插槽应该连接没有变量名称!