D:\QT5.9.0\Project\test1\test14\mywidget.h:48: error: call of overloaded 'qDegreesToRadians(int&)' is ambiguous qreal y2 = 150 - (i % 10 == 0 ? 140 : 135) * qSin(qDegreesToRadians(i)); ^
时间: 2024-02-10 08:13:16 浏览: 25
该错误提示是因为qDegreesToRadians函数的参数类型不明确,有多种可能的匹配类型。您可以尝试将该函数的参数类型更改为double类型,或将参数强制转换为double类型,以明确要调用的函数版本。例如,您可以将代码修改为以下形式:
```
qreal y2 = 150 - (i % 10 == 0 ? 140 : 135) * qSin(qDegreesToRadians(static_cast<double>(i)));
```
或者将函数参数类型更改为double类型:
```
qreal qDegreesToRadians(double d);
```
这样就可以避免函数调用的二义性问题。
相关问题
D:\QT5.9.0\Project\test1\project2\qdiscwidget.cpp:144: error: use of undeclared identifier 'rotate_point'
这个错误提示是因为在 qdiscwidget.cpp 文件的第 144 行使用了一个未声明的标识符 rotate_point。这可能是由于以下几种情况导致的:
1. 没有包含 rotate_point 所在的头文件:请检查是否在头文件中声明了 rotate_point 函数或变量,如果没有,请添加相应的声明;
2. rotate_point 函数或变量名拼写错误:请检查 rotate_point 函数或变量名是否拼写正确;
3. rotate_point 函数或变量未定义:请检查是否有定义 rotate_point 函数或变量的代码,如果没有,请添加相应的定义。
希望以上提示对您有所帮助。
D:\QT5.9.0\Project\test1\test15\clockwidget.h:82: error: no matching function for call to 'QPainter::drawConvexPolygon(QPolygon&, int)' painter.drawConvexPolygon(m_hourHand, 3); ^
这个错误是因为 `QPainter::drawConvexPolygon()` 函数的第二个参数类型错误导致的。在 Qt 5.9 中,`drawConvexPolygon()` 函数的第二个参数应该是 `int` 类型的,表示多边形中点的数量(也就是多边形由几个点组成)。但是在您的代码中,第二个参数使用了 `3`,这是错误的。
要解决这个问题,您需要将 `drawConvexPolygon()` 函数的第二个参数改为多边形的点数。在您的代码中,`m_hourHand`、`m_minuteHand` 和 `m_secondHand` 都是三个点组成的多边形,因此应该将第二个参数改为 `3`,如下所示:
```c++
painter.drawConvexPolygon(m_hourHand, 3);
painter.drawConvexPolygon(m_minuteHand, 3);
painter.drawConvexPolygon(m_secondHand, 3);
```
这样就可以解决这个编译错误了。