簡體   English   中英

在QGraphicsItem中將專用槽連接到QAction

[英]Connecting a private slot to a QAction in QGraphicsItem

在下一個代碼中,我試圖為contextGenuEvent添加動作以獲取QGraphicsItem

但問題是從不調用插槽“resize()”

void Rect::contextMenuEvent(QGraphicsSceneContextMenuEvent *event)
{
    QMenu * menu = new QMenu();
      QAction *resizeAction = menu->addAction("Resize?");
      connect(resizeAction, SIGNAL(triggered()), this, SLOT(resize()));
      menu->exec(event->screenPos());
      delete menu;

}

Edit ::類“Rect”的頭文件

 class Rect:  public QObject,public QGraphicsItem
    {

    public:
        enum { Type = UserType + 4 };
        Rect(int x,int y,QString s,QColor myRectangleColor,
             QGraphicsItem *parent = 0, QGraphicsScene *scene = 0);
        Rect();
        int type() const
        { return Type; }
        QPainterPath shape() const;
        QRectF my_rect;

        virtual QRectF boundingRect() const; 
        virtual void paint (QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget);

    protected:

        virtual void mouseMoveEvent ( QGraphicsSceneMouseEvent * event )
        virtual void mousePressEvent (QGraphicsSceneMouseEvent * event );
        virtual void mouseReleaseEvent (QGraphicsSceneMouseEvent * event );

        virtual void mouseMoveEvent(QGraphicsSceneDragDropEvent *event);
        virtual void mousePressEvent(QGraphicsSceneDragDropEvent *event);
        virtual bool sceneEventFilter ( QGraphicsItem * watched, QEvent * event ) ;
        virtual void contextMenuEvent(QGraphicsSceneContextMenuEvent *event);


    private:
        private slots:
        void resize();
        void MoveUpFun();
    };

我的評論是正確的:你在課堂上錯過了Q_OBJECT宏。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM