让我们假设有一个带有几个自定义QGraphicsItem的场景。并且每个这样的项目都具有缩放的能力(我将特殊的锚放置到角落)。它正如预期的那样运作良好。
现在我想用QGraphicsItemGroup对一些项目进行分组,我想在组项目中添加相同的比例能力。
以下是我的代码示例:
class Base : public QGraphicsItem
{
public:
Base(QGraphicsItem * parent = 0);
...
// I implement scaling with these functions:
void mouseMoveEvent(QGraphicsSceneMouseEvent * event);
void mousePressEvent(QGraphicsSceneMouseEvent * event);
void mouseReleaseEvent(QGraphicsSceneMouseEvent * event);
}
class Item : public Base
{
public:
Item(QGraphicsItem * parent = 0);
QRectF boundingRect() const;
void paint(QPainter * painter, const QStyleOptionGraphicsItem * option, QWidget * widget = 0);
}
class Group : public Base,QGraphicsItemGroup
{
public:
Group(QGraphicsItem * parent = 0);
}
我可以编译此代码,但当scene.addItem(item)
是item
或Group
的实例时添加Item
之类的内容时,我会收到错误:
request for member 'addItem' is ambiguous
这个错误是可以理解的。对于对象和编译器,有两个类型为QGraphicsItem的父类,在这种情况下不鼓励。所以我的问题 - 我怎么能避免它呢?我不想将相同的代码(用于缩放)复制到2个类中。