使用重载的信号 的 多种写法
接下来我们将使用QComboBox 的信号来举例
我们发现currentIndexChanged
这个信号是重载的 ,我们在正常写是编译不通过的
ui.comboBox->addItem(QStringLiteral("你好"));
ui.comboBox->addItem(QStringLiteral("hello"));
ui.comboBox->addItem(QStringLiteral("world"));
//第一种
.h文件
public slots:
void slot_ComboBox_currentIndexChanged1(int);
void slot_ComboBox_currentIndexChanged2(const QString &);
/**************************************/
.cpp文件
connect(ui.comboBox, SIGNAL(currentIndexChanged(int)), this, SLOT(slot_ComboBox_currentIndexChanged1(int)));
connect(ui.comboBox, SIGNAL(currentIndexChanged(const QString &)), this, SLOT(slot_ComboBox_currentIndexChanged2(const QString &)));
void HyperlinksLabel::slot_ComboBox_currentIndexChanged1(int index)
{
qDebug() << "index:" << index;
}
void HyperlinksLabel::slot_ComboBox_currentIndexChanged2(const QString& str)
{
qDebug() << "str:" << str;
}
//第二种 参数必须要和 帮助文档中的 参数一致 否则找不到 报错
connect(ui.comboBox, static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged), this, [=](int index) {
qDebug() << "index:" << index;
});
connect(ui.comboBox, static_cast<void (QComboBox::*)(const QString &)>(&QComboBox::currentIndexChanged), this, [=](const QString & str) {
qDebug() << "str:" << str;
});
//第三种 参数必须要和 帮助文档中的 参数一致 否则找不到 报错
connect(ui.comboBox, QOverload<int>::of(&QComboBox::currentIndexChanged), this, [=](int index) {
qDebug() << "index:" << index;
});
connect(ui.comboBox, QOverload<const QString &>::of(&QComboBox::currentIndexChanged), this, [=](const QString & str) {
qDebug() << "str:" << str;
});
结果: