2013-03-11 5 views
0

개체 :: 연결 : 해당 신호 없음 RollsRoyceTab :: signal_aValueChange (int aValue) ??????해당 슬롯/신호 없음 (Qt)

나는 (...이, SLOT (rrValuesHolder (INT을 aValue, INT bValue, INT cValue)))

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 aValue))?

답변

3

첫 번째 : QObject :: connect()의 신호와 슬롯은 변수 이름이 없어야합니다.

둘째 : 인수가 하나 인 신호를 세 개의 인수를 사용하여 SLOT과 연결할 수 없습니다. SIGNAL은 SLOT보다 적은 인수를 가져야합니다.

그것은 예컨대 :

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

을 위해해야 ​​그리고 그것은 그것에 대해 간단하게 설명합니다. 하나의 인수 (예 : QString)로 신호를 내보내는 경우 슬롯에 다른 인수가 두 개 있다는 것을 어떻게 알 수 있습니까? 나에게 그것은 논리적이다.

+0

확인. connect (this, SIGNAL (signal_aValueChange (int, int, int)), SLOT (rrValuesHolder (int, int, int))); 방출 signal_aValueChange (aValue, bValue, cValue); –

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

Referenc로 e : http://qt-project.org/doc/qt-4.8/signalsandslots.html

EDIT : 혈액에는 내가 무시한 한 가지 추가 정보가 포함되어 있습니다. 신호 및 슬롯은 변수 이름없이 연결되어야합니다!