Qt QComboBox之无法将参数 2 从“overloaded-function”转换为“const char *”上下文不允许消除重载函数的歧义

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

发布了43 篇原创文章 · 获赞 11 · 访问量 3万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 编程工作室 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览