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);没有意义。
写其他容易引起变化的语句,如楼上所述写一些输出控制台的语句,这样看更明显一些。另外brush->setColor(Qt::blue);没有意义。
#4
boundRect{return QRectF() };决定鼠标点击起作用的位置,和你的item画的位置一致吗?
#1
同求、、 这问题我也问两次了..
#2
mousePressEvent里面的代码本身就不能使item有什么变化,建议加一句打印信息看看有没有进入该函数
#3
不写setFocus();
写其他容易引起变化的语句,如楼上所述写一些输出控制台的语句,这样看更明显一些。另外brush->setColor(Qt::blue);没有意义。
写其他容易引起变化的语句,如楼上所述写一些输出控制台的语句,这样看更明显一些。另外brush->setColor(Qt::blue);没有意义。
#4
boundRect{return QRectF() };决定鼠标点击起作用的位置,和你的item画的位置一致吗?