关于QT 中QGraphicsItem 的鼠标事件
RT, 现有一个QGraphicsItem作为父Item 其下有若干继承自QGraphicsItem 的子Items
此时点击任一子Item都是没反应的 若希望点击某一子Item时改变该子Item的背景色 如何实现
我想着是要重写子Item的MousePressEvent()
像下面这样
void Item::MousePressEvent( QGraphics~~~~~` * enent )
{
this->setSelected();
}
void paint(...)
{
...
if( this->isSelected() )
{
painter->setBrush( Qt::black );
}
}
大概思路是这样,但是没有效果,感觉像是该鼠标按下事件没有被子Item接收到,请各位前辈不吝赐教
[解决办法]
你有没有重载 QGraphicsScene中的 事件过滤器或者 mousePressEvent的方法, Graphics里面的事件流是通过scene派发的,如果你在场景里面把事件给吞了,就是重载了mousePressEvent然后没做任何处理,没把事件在丢出来,这样就会把事件吞掉。或者在事件过滤器里面return true了,多会吞掉事件,那样你的item里面是接收不到事件的。即使你把焦点设置到item里面去也一样。
[解决办法]
同意