插槽可以占用的信号少于信号提供的参数,如何? - Qt

时间:2014-01-26 12:21:56

标签: c++ qt arguments signals slot

我有一个声明,声明是:

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

我想将它连接到插槽两次,首先需要sPI和sWID参数,其他插槽需要ePI和eWID。插槽声明是:

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

(我想删除时()发出,断开连接(sPI,sWID)并断开连接(ePI,eWID))

请帮我编写QObject :: connect()语句。 感谢。

1 个答案:

答案 0 :(得分:1)

对于第一个,“断开连接(sPI,sWID)”,只需执行:

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

第三个和第四个参数将被忽略,并且将使用前两个调用disconnect。

第二次连接“断开连接(ePI,eWID)”是不可能的。您需要一个连接到removed()的中间槽:

声明:

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