zoukankan      html  css  js  c++  java
  • qt 如何给图元安装一个场景事件过滤器?

    void QGraphicsItem::installSceneEventFilter(QGraphicsItem *filterItem)

    class LabCrossEvent : public QGraphicsObject
    {
        Q_OBJECT
    public:
        LabCrossEvent() {}
        virtual ~LabCrossEvent() {}
    
        virtual QRectF boundingRect() const
        {
            return QRectF();
        }
    
        virtual void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = Q_NULLPTR)
        {
    
        }
    signals:
        void hover();
    public slots:
    protected:
        bool LabCrossEvent::sceneEventFilter(QGraphicsItem * watched, QEvent * event)
        {
            qDebug() << "||" << event->type();
            if(event->type() == QEvent::GraphicsSceneMove)
            {
                emit hover(); // signal that the item was moved
            }
            //return  sceneEventFilter(watched,event);
            return false; // pass the event to the original target item
        }
    
    };
    
    
            QGraphicsItem* dL_Item = this->addRect(-22,-std::abs(high_dL),44,height_dL,QPen(QColor("#239B56")));
            
            //安装的过场景事件滤器必须添加到场景中,否则事件过滤器无效
            this->addItem(&_labCrossEvent);
            //为矩形图元安装一个场景事件过滤器
            dL_Item->installSceneEventFilter(&_labCrossEvent);
    
  • 相关阅读:
    226. 翻转二叉树
    LeetCode 1660.纠正二叉树(Medium)
    814. 二叉树剪枝
    110. 平衡二叉树
    HTTPS原理浅析
    MySQL知识网络
    制作SSL证书(签发免费证书)
    Redis高可用三(Redis Cluster集群)
    Redis高可用二( 哨兵sentinel)
    Redis高可用一(主从)
  • 原文地址:https://www.cnblogs.com/cheungxiongwei/p/9563864.html
Copyright © 2011-2022 走看看