欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

我使用的是第一种办法,运行成功(按照上面的参数来修改)