0

基本的に次のような QGraphicsItem から派生したクラスがあります。

class MyRect: public QObject, public QGraphicsItem
{     
        Q_OBJECT
        Q_INTERFACES(QGraphicsItem)
public:
        explicit MyRect(QObject *parent = 0);
        MyRect(QColor fillColor, float val, QString txt = "", bool isLeaf = false);
        int width, height;  
protected:
        virtual void mouseReleaseEvent(QGraphicsSceneMouseEvent *event);
        virtual void mousePressEvent(QGraphicsSceneMouseEvent *event);          
        virtual QRectF boundingRect() const;
        virtual void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget);
};

問題は、mouseReleaseEvent と mousePressEvent が、右ボタンのクリックを検出できない QGraphicsSceneMouseEvent 引数のみを受け入れることです。使用できる mousePressEvent(QMouseEvent *event) バージョンがあることは知っていますが、 QGraphicsItem では機能しないようです....ここで立ち往生することはできません...あなたの答えに感謝します。

4

1 に答える 1

1

QGraphicsItem::contextMenuEventを再実装し、QGraphicsSceneContextMenuEvent::Reason をチェックして、イベントがマウス クリックによって発生したかどうかを確認してください。

于 2013-11-09T02:11:28.690 に答える