qt - 为什么我收到 QGraphicsPolygonItem 重新实现的 moc 错误
问题描述
请帮我!我正在进行一个小型个人项目,我需要某种节点编辑器。为此,我必须定义从Individual
该类继承的QGraphicsPolygonItem
类。我尽可能简化了代码以便能够识别错误,但无济于事。我遇到了我真的不明白的MOC(元对象编译器)错误(我们在某种程度上都是新手)。此外,网络上没有任何关于它的内容,你是我最后的手段。
这是Individual
类定义:
#ifndef INDIVIDUAL_H
#define INDIVIDUAL_H
#include <QGraphicsPolygonItem>
#include <QGraphicsTextItem>
#include <QPainterPath>
class Individual : public QGraphicsPolygonItem
{
Q_OBJECT
public:
Individual(QString p_fName, QString p_lName,QGraphicsItem* parent = 0);
};
#endif // INDIVIDUAL_H
这是它的实现:
#include "individual.h"
Individual::Individual(QString p_fName , QString p_lNamen, QGraphicsItem* parent)
:QGraphicsPolygonItem(parent)
{
QPainterPath temp_path;
temp_path.addRoundRect(0,0,100,50,10,10);
setPolygon(temp_path.toFillPolygon());
}
然后在 main.cpp (简单地说)我写了这样的东西:
#include "widget.h"
#include <QApplication>
#include <QGraphicsScene>
#include <QGraphicsView>
#include <individual.h>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Widget w;
w.setMinimumSize(800,600);
QGraphicsView view(&w);
view.setMinimumSize(800,600);
QGraphicsScene scene;
Individual myPoly("My","Name"); // The arguments are not used for now just kept them there in case
scene.addItem(&myPoly);
view.setScene(&scene);
w.show();
return a.exec();
}
最后我得到的错误:
解决方案
因为QGraphicsPolygonItem
是 aQGraphicsItem
而不是 a QObject
。您可以使用 C++ 的多重继承功能,Individual
通过
Individual : public QObject, public QGraphicsPolygonItem
{
...
并且不要忘记为Individual
ctore 调用 QObject ctor。
现在,我应该建议你阅读这个问题和答案。
推荐阅读
- microsoft-graph-api - 使用 Office 365 REST API 从共享日历中获取事件
- sql-server - SQL Server 触发器更改不同的表
- git - 已跟踪的文件会自动合并到特定路径中而不会发生冲突
- php - ACF 按日期时间字段排序即将发生的事件不起作用
- android - 每个父级的循环 ExpandableListview 子级
- nginx - 如何通过 https 访问我的节点服务器?
- uwp - UWP 导航视图消失
- angular - Angular 6:自定义组验证 - 将错误设置为一个字段
- sql - 一个 liquibase 变更集中的 2 个先决条件
- python - 渲染()缺少 1 个必需的位置参数:'template_name'