作者: 一去、二三里
个人微信号: iwaleon
微信公众号: 高效程序员
对于 QGraphicsItem 来说,信号/槽和属性机制不是它的一部分,因为它不继承自 QObject。这是一个出于性能考虑的设计决策,允许比较大的场景以及快速的交互。
特殊情况下,如果真的需要使用信号/槽,可以使用 QObject 的信号/槽和属性机制来扩展 QGraphicsItem。
继承自 QObject 和 QGraphicsItem
这种方式属于多继承,也是最容易想到的方式。
class CustomItem : public QObject, public QGraphicsItem
{
Q_OBJECT
public:
explicit CustomItem(QGraphicsItem *parent = 0);
virtual QRectF boundingRect() const;
virtual void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = 0);
Q_SIG