绘制简单多边形时出现 Qt C++ 错误

Posted

技术标签:

【中文标题】绘制简单多边形时出现 Qt C++ 错误【英文标题】:Qt C++ Error when drawing a simple polygon 【发布时间】:2018-12-07 11:11:51 【问题描述】:

我有一个旧的 c++ 程序,我需要恢复它的生命。我现在的任务是绘制一个多边形。我一开始就被困住了,因为我没有图形方面的经验。我想用来绘制 Polygen 的点存储在

QVector 看起来像这样:

现在我想画我的多边形。我使用此代码:

            ggScene = new QGraphicsScene();   
            QPolygonF shape(points);
            QGraphicsItem* gg = ggScene->addPolygon(shape);

编译时出现以下错误:

无法在初始化时将 QGraphicsPolygonItem* 转换为 QGraphiscItem

任何人都可以帮我解决这个问题,谢谢。

【问题讨论】:

您确定这是正确的错误消息和代码吗?我预计例如QGraphicsItem gg = ggScene->addPolygon(shape); 的错误。你能提供一个minimal reproducible example吗? 我也得到无法在初始化中将 QGraphicsPolygonItem* 转换为 QGraphicsItem “也”?只有你得到错误,只有你知道代码是什么,要获得帮助,你需要提供minimal reproducible example。 QGraphicsPolygonItem 继承自 QAbstractGraphicsShapeItem 继承自 QGraphicsItem,因此您的代码应该没问题,但错误是关于将 QGraphicsPolygonItem*(指针)转换为 QGraphicsItem(对象)并且在您显示的代码 您应该包含 ,似乎 QGraphicsItem 是在某处前向声明的,但编译器在赋值行不知道。 【参考方案1】:

我会不顾一切地猜测实际的错误消息是......

无法将“QGraphicsPolygonItem*”转换为“QGraphicsItem*” 初始化

(注意QGraphicsItem* 而不仅仅是QGraphicsItem

如果是这种情况,那么问题可能是编译器只看到QGraphicsPolygonItem 的前向声明。因此它不知道QGraphicsPolygonItem 继承自QGraphicsItem,因此无法执行从QGraphicsPolygonItem*QGraphicsItem* 的隐式转换。

修复可能是简单的添加...

#include <QGraphicsPolygonItem>

【讨论】:

以上是关于绘制简单多边形时出现 Qt C++ 错误的主要内容,如果未能解决你的问题,请参考以下文章