绘制简单多边形时出现 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++ 错误的主要内容,如果未能解决你的问题,请参考以下文章

使用 Qt 和 C++ 开发游戏

Qt QGraphicsItem 在单独类的 boundingRect() 内绘制多边形?

Qt 学习之路 2(26):反走样

Qt 5.5 绘制指针

用户有啥办法可以通过在 c++ 中使用 opengl 来决定他想要绘制的多边形吗?

C++ YUV420文件读取与显示,绘制矩形框,绘制线段(绘制直线),绘制多边形(常用YUV数据格式——YUV420P中的YU12与YUV420SP中的NV21)