qt - 如何正确地从 QGraphicsLineItem 派生/继承?
问题描述
我正在尝试创建一个QGraphicsLineItem
名为 Edge 的自定义,但我做得不好,我是Qt
. 现在,例如,我不能没有错误地从 ' ' 到 ' *'进行scene->add(edgeItem)
可行的转换。Edge
QGraphicsItem
我的边缘.h
#ifndef EDGE_H
#define EDGE_H
#include <QWidget>
#include <QApplication>
#include <QGraphicsScene>
#include <QGraphicsView>
#include <QGraphicsItem>
class Edge:public QGraphicsLineItem
{
private:
QGraphicsEllipseItem * state1;
QGraphicsEllipseItem * state2;
public:
enum { Type = UserType + 2 };
int type() const override;
Edge(QGraphicsEllipseItem * s1, QGraphicsEllipseItem* s2);
QGraphicsEllipseItem *getState1() const;
void setState1(QGraphicsEllipseItem *value);
QGraphicsEllipseItem *getState2() const;
void setState2(QGraphicsEllipseItem *value);
QList<QPointF> centerPoints();
};
#endif // EDGE_H
我的边缘.cpp
#include "edge.h"
#include <QGraphicsEllipseItem>
Edge::Edge(QGraphicsEllipseItem* s1, QGraphicsEllipseItem* s2)
{
setState1(s1);
setState2(s2);
setFlag(QGraphicsItem::ItemIsMovable);
setFlag(QGraphicsItem::ItemSendsScenePositionChanges);
setFlag(QGraphicsItem::ItemIsSelectable);
}
int Edge::type() const
{
return Type;
}
QGraphicsEllipseItem *Edge::getState1() const
{
return state1;
}
void Edge::setState1(QGraphicsEllipseItem *value)
{
state1 = value;
}
QGraphicsEllipseItem *Edge::getState2() const
{
return state2;
}
void Edge::setState2(QGraphicsEllipseItem *value)
{
state2 = value;
}
QList<QPointF> Edge::centerPoints()
{
QPointF point1(state1->rect().x() + state1->rect().width()/2,state1->rect().y()+ state1-> rect().height()/2);
QPointF point2(state2->rect().x()+state2->rect().width()/2,state2->rect().y()+ state2-> rect().height()/2);
QList<QPointF> list;
list.append(point1);
list.append(point2);
return list;
}
有人可以告诉我如何修改我的 Edge 以使其成为“真实”QGraphicsItem
吗?
解决方案
这是一个正确继承的例子
所以.h
class Edge: public QGraphicsLineItem
{
public:
Edge(QGraphicsEllipseItem * s1 = nullptr, QGraphicsEllipseItem* s2= nullptr, QGraphicsItem* parent = nullptr);
//.....
};
和.cpp
Edge::Edge(QGraphicsEllipseItem * s1, QGraphicsEllipseItem* s2, QGraphicsItem* parent)
:QGraphicsLineItem( parent)
{
//.........
}
推荐阅读
- hyperledger-composer - 尝试启动业务网络时出错。最后一个错误是 Error: Error: 14 UNAVAILABLE: Trying to connect an http1.x server
- python - Numpy 填充 4D 数组很慢
- r - 如何制作显示单个基因与多个基因之间相关性的散点图?
- python - 在 scipy(python)中执行 B-Spline 拟合时如何更改基函数的数量?
- android-studio - Android Studio 3.2 beta 2 和 3.3 canary 2 每次都死机
- javascript - Javascript函数不适用于选择的插件
- php - 将某个 URL 目录下的 Apache 请求定向到一个文件,将所有其他请求定向到第二个文件
- android - Android - onclick 在模拟器 api 19 上不断崩溃,在其他地方工作正常
- c# - '列表
' 不包含 'ChoiceId ' 的定义并且没有扩展名...您是否缺少 using 指令或程序集引用?) - bash - How can I check if a variable that need to contain a number has been set?