C++ 无法将QButtonGroup按钮链接到函子
我无法将QButtonGroup的信号连接到函子C++ 无法将QButtonGroup按钮链接到函子,c++,qt,qt5,C++,Qt,Qt5,我无法将QButtonGroup的信号连接到函子 functionGroup = new QButtonGroup(); functionGroup->addButton( ui->pushButtonSetupExperiment, 0); functionGroup->addButton( ui->pushButtonConfigure, 1); functionGroup->addButton( ui->pushButtonModify, 2); fun
functionGroup = new QButtonGroup();
functionGroup->addButton( ui->pushButtonSetupExperiment, 0);
functionGroup->addButton( ui->pushButtonConfigure, 1);
functionGroup->addButton( ui->pushButtonModify, 2);
functionGroup->addButton( ui->pushButtonSearch, 3);
functionGroup->addButton( ui->pushButtonLogout, 4);
/* This works:
connect( ui->pushButtonSetupExperiment, &QPushButton::clicked, [=]() {
emit finished(0);
});
*/
// This fails:
connect( functionGroup, &QButtonGroup::buttonClicked, [=](int id) {
emit finished(id);
});
出现以下编译器错误:
错误:C2664:'QMetaObject::Connection QObject::connect(const QObject*,const char*,const char*,Qt::ConnectionType)const':无法将参数2从“重载函数”转换为“const char*”…
不知道怎么了。当然,我可以使用旧语法来完成任务,但我需要了解这里的错误。谢谢你帮助我
Qt版本:5.5.1编译器:msvc2012问题是
QButtonGroup::buttonClicked
有两个重载,它无法区分您指的是哪一个,因此会生成编译错误。要解决这个问题,您需要使用static\u cast
来指示要使用哪个按钮的变体。不幸的是,语法有点笨拙:
connect(functionGroup, static_cast<void(QButtonGroup::*)(int)>(&QButtonGroup::buttonClicked), ...);
connect(functionGroup,static_cast(&QButtonGroup::buttonClicked),…);
有关更多信息,请参阅@Devpia链接的文档页面。根据您个人的意见,您可能希望使用旧的基于字符串的连接语法(即,值简洁性和可读性优于类型安全性)。或者您可以使用宏或使用类型别名来尝试简化操作。问题是QButtonGroup::buttonClicked
有两个重载,它无法消除您指的是哪一个,因此会生成编译错误。要解决这个问题,您需要使用static\u cast
来指示要使用哪个按钮的变体。不幸的是,语法有点笨拙:
connect(functionGroup, static_cast<void(QButtonGroup::*)(int)>(&QButtonGroup::buttonClicked), ...);
connect(functionGroup,static_cast(&QButtonGroup::buttonClicked),…);
有关更多信息,请参阅@Devpia链接的文档页面。根据您个人的意见,您可能希望使用旧的基于字符串的连接语法(即,值简洁性和可读性优于类型安全性)。或者您可以使用宏或使用
类型别名来尝试简化操作。重载信号或插槽是明确的,使用基于字符串的语法。。。阅读这里了解更多信息:我忽略了最后一部分!谢谢重载信号或插槽是明确的,使用基于字符串的语法。。。阅读这里了解更多信息:我忽略了最后一部分!谢谢