现有如下重载信号和槽函数:
signal:
void testSig(int val);
void testSig(QString str);
public slots:
void onTestSig(int val);
void onTestSig(QString str);
第一种方式就是传统的QT4的写法:
connect(this, SIGNAL(testSig(int)), this, SLOT(onTestSig(int)));
connect(this, SIGNAL(testSig(QString)), this, SLOT(onTestSig(QString)));
第二种方式是类型转换:
connect(this, static_cast<void(Widget::*)(int)>(&Widget::testSig), this, static_cast<void(Widget::*)(int)>(&Widget::onTestSig));
connect(this, static_cast<void(Widget::*)(QString)>(&Widget::testSig), this, static_cast<void(Widget::*)(QString)>(&Widget::onTestSig));
第三种是方式是使用QOverload指定参数类型:
connect(this, QOverload<int>::of(&Widget::testSig), this, QOverload<int>::of(&Widget::onTestSig));
connect(this, QOverload<QString>::of(&Widget::testSig), this, QOverload<QString>::of(&Widget::onTestSig));