連接專用插槽到的QAction在接下來的代碼中,我試圖添加動作到的ContextMenuEvent一個的QGraphicsItem中的QGraphicsItem
但問題是槽「調整()」是從來沒有所謂
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;
}
編輯:: 類「矩形」的頭文件
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();
};
'QGraphicsItem'不是'QObject'。但是你已經成功編譯了這段代碼,這是否意味着'Rect'繼承了'QGraphicsItem'和'QObject'?請顯示頭文件的內容。檢查'connect'的返回值。 –
連接返回一個布爾值。檢查它是否知道它是否連接。如果它的私人它肯定不是... – Trompa
@Riateche是它繼承了這兩個類和「連接」返回false – Radwa