form_para.cpp:336:30: Call to member function 'arg' is ambiguous qstring.h:313:31: candidate function qstring.h:315:31: candidate function qstring.h:1111:25: candidate function qstring.h:1113:25: candidate function qstring.h:1115:25: candidate function qstring.h:1117:25: candidate function qstring.h:1119:25: candidate function qstring.h:1121:25: candidate function
时间: 2023-08-03 11:06:38 浏览: 247
这个错误提示是因为在调用`arg()`函数时,编译器无法确定应该调用哪个函数。在QT中,`arg()`函数有多个重载形式,如果在调用时没有传递足够的参数信息,编译器就无法确定应该调用哪个函数。
为了解决这个问题,可以显式地指定要调用的`arg()`函数的重载形式,如下所示:
```cpp
int num = -255; // 负数
QString hex_str;
if (num >= 0) {
hex_str = QString("%1").arg(num, 8, 16, QChar('0'));
} else {
hex_str = QString("%1").arg(((1 << 32) - 1) ^ ((-num - 1) << 1) | 1, 8, 16, QChar('0'));
}
qDebug() << hex_str;
```
在调用`arg()`函数时,将要调用的重载形式显式地指定为`arg(int, int, int, QChar)`,这样编译器就能够确定要调用哪个函数了。
相关问题
E:\Qt.projects\QTwork\FileDemo\mainwindow.cpp:125: error: no matching function for call to 'QString::arg(Student&)' ui->textEdit->setText(QString("%1 %2 %3").arg(stu1).arg(stu2).arg(stu3)); ^
这是一个编译错误,错误提示是没有找到匹配的函数来处理 `QString::arg(Student&)`。可能的原因是 `Student` 类型没有实现相应的转换函数或者 `QString::arg()` 函数没有重载对应的参数类型。
你可以检查一下 `Student` 类型是否定义了相应的转换函数,例如 `operator QString() const`。如果没有定义,你可以手动实现一个这样的函数来将 `Student` 类型转换为 `QString` 类型。
另外,你也可以尝试使用 `QString::number()` 或者 `QStringLiteral()` 等函数来将 `Student` 类型转换为 `QString` 类型,具体使用方法可以查看 Qt 官方文档。
阅读全文