QGraphicsItem未响应鼠标点击事件

时间:2022-03-03 23:23:50
头文件


public:
    explicit myItem();
    QRectF boundingRect()const;
    void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget);
    void mousePressEvent(QGraphicsSceneMouseEvent *event);


.cpp

myItem::myItem()
{
   brush=new QBrush(Qt::red);
   setFlag(QGraphicsItem::ItemIsFocusable);
}
void myItem::mousePressEvent(QGraphicsSceneMouseEvent *event)
{
    setFocus();
brush->setColor(Qt::blue);
}



main

    QApplication a(argc, argv);
    myItem t;
    QGraphicsScene w;
    w.addItem(&t);
    QGraphicsView v;
    v.setScene(&w);
    v.show();

每次点击Item都无反应 基本可以确定是没有响应鼠标点击事件 怎么解决 
有没有帖子可以讲解一下scene和item的事件传递过程 Qt自带的帮助不太理解

4 个解决方案

#1


同求、、 这问题我也问两次了..

#2


mousePressEvent里面的代码本身就不能使item有什么变化,建议加一句打印信息看看有没有进入该函数

#3


不写setFocus();
写其他容易引起变化的语句,如楼上所述写一些输出控制台的语句,这样看更明显一些。另外brush->setColor(Qt::blue);没有意义。

#4


boundRect{return QRectF() };决定鼠标点击起作用的位置,和你的item画的位置一致吗?

#1


同求、、 这问题我也问两次了..

#2


mousePressEvent里面的代码本身就不能使item有什么变化,建议加一句打印信息看看有没有进入该函数

#3


不写setFocus();
写其他容易引起变化的语句,如楼上所述写一些输出控制台的语句,这样看更明显一些。另外brush->setColor(Qt::blue);没有意义。

#4


boundRect{return QRectF() };决定鼠标点击起作用的位置,和你的item画的位置一致吗?