QGraphicsItem 如何使用信号/槽

简述

对于 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_SIGNALS:
    void mySignal();

public Q_SLOTS:
    void mySlot();
    ...
};

注意: 需要将 QObject 放在 QGraphicsItem 的前面。

继承自 QGraphicsObject

QGraphicsObject 类为需要信号/槽和属性的所有 items 提供一个基类,将 QGraphicsItem 的许多基本

©️2020 CSDN 皮肤主题: 技术黑板 设计师: CSDN官方博客 返回首页
实付39.90元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值