【发布时间】:2016-10-24 14:56:03
【问题描述】:
我正在尝试正确限制 QGraphicsItem(特别是 QGraphicsRectItem)的移动,而不更改本机行为以用作 X 轴上的滚动条。
我尝试覆盖 mouseMoveEvent 函数,但随后我需要重新编写矩形在 X 和 Y 方向上的行为。充其量,我可以让矩形用鼠标捕捉到一个位置。 (此处矩形将捕捉,因此鼠标将其保持在中点):
void SegmentItem::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
{
setY(0);
setX(event->scenePos().x() - boundingRect().width()/2);
}
我现在正在查看itemChange,正如here 所描述的那样,但它看起来有点笨拙且不完全优雅。
编辑:这应该可以工作,但我目前无法强制它工作。
有没有办法只限制 y 轴的运动? (我还需要为滚动条创建终点站,但稍后。)
【问题讨论】:
-
链接的 itemChange 解决方案是解决方案,而且确实非常优雅
-
很酷,但目前似乎没有任何限制。我在Class Reference Page 上阅读了“默认实现什么都不做,并返回值。” 你知道我需要改变什么吗?
标签: c++ qt c++11 qgraphicsscene qgraphicsitem