【发布时间】:2012-12-02 12:41:54
【问题描述】:
我有一个带有相当小的点标记的 QGraphicsScene。我想扩大这些标记的区域以使拖动更容易。标记是一个十字,距离原点 +/- 2 个像素。我已经重新实现了
QGraphicsItem::contains(const QPointF & point ) const
{
return QRectF(-10,-10,20,20);
}
和
void hoverEnterEvent(QGraphicsSceneHoverEvent* event)
{
setPen(QPen(Qt::red));
update();
}
但是标记只有在被光标直接击中时才会变成红色(即使这样也有点挑剔)。如何扩大“悬停区域”?
【问题讨论】:
-
QGraphicsItem::contains() 需要返回一个布尔值。您正在返回一个 QRectF。
-
我不知道我为什么要这样做......
-
另外,在更正签名后,原来 contains() 没有被调用。即使重新实现 boundingRect() 也无济于事。
-
通常这些东西是通过边界矩形或形状函数处理的,尝试重载那些
-
重载 shape() 最终改变了行为。我在文档中找不到任何关于此的具体内容 - 它是否提到了悬停事件使用哪种方法?
标签: qt hover qgraphicsitem