1:Qt4风格的connect:
connect(ui->comboBox, SIGNAL(activated(int index)), this, SLOT(onActivated(int nIndex)));
这是正常的connect写法,不用担心重载,因为SIGNAL()里面有信号的参数
2:Qt5风格的connect
connect(ui->comboBox, &QComboBox::activated, this, &MyWidget::onActivated);
这样写肯定报错:Qt QComboBox之无法将参数 2 从“overloaded-function”转换为“const char *”上下文不允许消除重载函数的歧义
// 解决方法:
connect(ui->comboBox, static_cast<void (QComboBox::*)(int)>(&QComboBox::activated), this, &MyWidget::onActivated);
3:lambda表达式
QButtonGroup* pButtonGroup = new QButtonGroup(widget);
connect(pButtonGroup,&QButtonGroup::buttonClicked,[=](QAbstractButton *button)
{
PrefixPointText = button->text();
})
这样写肯定也是不行,也会报错:Qt QComboBox之无法将参数 2 从“overloaded-function”转换为“const char *”上下文不允许消除重载函数的歧义
//解决方法 用overload
connect(pButtonGroup, QOverload<QAbstractButton *>::of(&QButtonGroup::buttonClicked),
[=](QAbstractButton *button)
{
PrefixPointText = button->text();
});
当然也可以用QT5的connect
connect(pButtonGroup, static_cast<void (QButtonGroup::*)(QAbstractButton *)>(&QButtonGroup::buttonClicked),
[=](QAbstractButton *button)
{
PrefixPointText = button->text();
});