Qt 信号与槽使用错误 :error: no matching function for call to ‘connect‘
程序员文章站
2022-03-30 22:41:34
...
原代码斜体样式*:*
QObject::connect(comboBoxVersion, &QComboBox::currentIndexChanged, this, &RepositoryWidget::slotDisplayVersion);
执行出现错误原因是:connect 采用的是 Qt 5 的语法,而我在QT4中运行,函数 currentIndexChanged 函数重载,有两个不同形参:
void currentIndexChanged(int index)和 void currentIndexChanged(const QString &)
编译器不知道要使用哪个函数。
解决办法是:
1.使用QT5之前的语法
QObject::connect(comboBoxVersion, SIGNAL(currentIndexChanged(const QString &)), this, SLOT(slotDisplayVersion(const QString &)));
2.强制类型转换:
QObject::connect(comboBoxVersion, static_cast<void (QComboBox::*)(const QString &)>(&QComboBox::currentIndexChanged), this, &RepositoryWidget::slotDisplayVersion);
我使用的是第一种办法,运行成功(按照上面的参数来修改)