[英]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.