【发布时间】:2014-03-04 22:42:44
【问题描述】:
我有一个从QGraphicsScene 派生的场景对象和一个从QGraphicsItem 派生的自定义项目。
我希望这个项目对于鼠标事件是“透明的”,所以点击项目区域会调用
QGraphicsScene::mousePressEvent();
来自文档:
"...禁用项目的鼠标事件(即,使其对 鼠标事件),调用 setAcceptedMouseButtons(0)。"
但是,如果我单击项目区域,场景仍然不会收到 mouce 事件。
MyItem::MyItem(QGraphicsItem * parent) :
QGraphicsItem(parent)
{
setAcceptedMouseButtons(Qt::NoButton);
}
QRectF MyItem::boundingRect() const
{
return QRectF(0,0,100,100);
}
void MyItem::paint(QPainter * painter, const QStyleOptionGraphicsItem * option, QWidget * widget)
{
painter->fillRect(boundingRect(),QColor(0,0,160,10));
}
那么我怎样才能忽略该项的鼠标事件呢?
将来我可能需要使用该项目处理鼠标事件,因此可能正确的决定是实现 QGraphicsItem::mousePressEvent() 并以某种方式将事件传递给场景。
【问题讨论】:
标签: qt qgraphicsitem qgraphicsscene