2014-01-26 36 views
0

我有一個信號,它的聲明是:插槽的參數可能比信號提供的參數少,如何? - Qt的

void removed(int sPI, int sWID , int ePI, int eWID); 

我想將它連接到一個插槽兩倍,首先需要SPI和SWID參數和其他插槽需要外延和eWID。插槽聲明:

void disconnect(int i, int wID = 0); 

(我想刪除()時發出,斷開(SPI,SWID),也斷開(EPI,eWID))

請幫我寫的QObject ::連接( )聲明。 謝謝。

回答

1

爲先,「斷開(SPI,SWID)」,只是做:

connect(x, SIGNAL(removed(int,int,int,int)), y, SLOT(disconnect(int,int))); 

第三和第四參數只會被忽略,將斷開與前兩個被調用。

第二次連接,「disconnect(ePI,eWID)」是不可能的。你需要()連接到去除中間槽:

聲明:

Q_SLOTS: 
    void somethingRemoved(int, int, int, int); 

定義:

void Foobar::somethingRemoved(int sPI, int sWID, int ePI, int eWID) { 
    disconnect(sPI, sWID); 
    disconnect(ePI, eWID); 
} 

連接:

connect(x, SIGNAL(removed(int,int,int,int)), foobar, SLOT(somethingRemoved(int,int,int,int))); 
+0

Thaks。在這種方法中,另一種解決方案是將信號分成兩個信號,如:'void removedS(int sPI,int sWID); &void removedE(int ePI,int eWID); 「 – user3237431