我继承了一个名为GraphicsPixmapItem
from的类QGraphicsPixmapItem
,以便覆盖/创建一些鼠标事件。问题是我想在执行一些计算后发出一个信号,但除非执行一些黑客攻击,否则它看起来是不可能的,因为这个类不是QObject
.
为此,我也尝试过继承上述新类QObject
,但我不断收到编译器错误。
我的尝试:
头文件(graphicspixmapitem.h
):
#ifndef GRAPHICSPIXMAPITEM_H
#define GRAPHICSPIXMAPITEM_H
#include <QObject>
#include <QGraphicsPixmapItem>
#include <QGraphicsSceneMouseEvent>
class GraphicsPixmapItem : public QObject, public QGraphicsPixmapItem
{
Q_OBJECT
public:
explicit GraphicsPixmapItem(QGraphicsItem *parent = 0);
virtual void mousePressEvent(QGraphicsSceneMouseEvent * mouseEvent);
virtual void mouseReleaseEvent(QGraphicsSceneMouseEvent * mouseEvent);
signals:
void translationVector(QPointF info);
};
#endif // GRAPHICSPIXMAPITEM_H
源文件(graphicspixmapitem.cpp
):
#include "graphicspixmapitem.h"
GraphicsPixmapItem::GraphicsPixmapItem(QGraphicsItem *parent) :
QGraphicsPixmapItem(parent)
{
}
void GraphicsPixmapItem::mousePressEvent(QGraphicsSceneMouseEvent * mouseEvent)
{
//Code
}
void GraphicsPixmapItem::mouseReleaseEvent(QGraphicsSceneMouseEvent * mouseEvent)
{
QPointF info;
//Code
emit(translationVector(info));
}
我收到以下链接器错误:
未定义对“GraphicsPixmapItem 的 vtable”的引用
对“GraphicsPixmapItem::translationVector(QPointF)”的未定义引用
关于如何进行相应的任何线索?
边注:
我知道这QGraphicsObject
可能是一个不错的选择,但正如这里所讨论的,性能看起来会受到使用它们时发出的信号量的严重影响,其中大多数不会在我的情况下使用。这就是为什么我更喜欢使用 baseQGraphicsItem
而不是QGraphicsObject
.
提前谢谢了。