【发布时间】:2012-06-20 22:04:06
【问题描述】:
我在限制 QGraphicItems 的移动时遇到问题:
QVariant CustomRectItem::itemChange(GraphicsItemChange change, const QVariant& value)
{
if (change == QGraphicsItem::ItemPositionChange && this->scene()) {
// parameter value is the new position
QPointF newPos = value.toPointF();
QRectF rect = this->scene()->sceneRect();
// keep the item inside the scene rect
if (!rect.contains(newPos)) {
if(newPos.x() < rect.x())
newPos.setX(rect.x());
return newPos;
}
}
return QGraphicsItem::itemChange(change, value);
}
这段代码应该防止一个项目被拖到场景的左边 从而增加它的大小。它有点工作。 我的问题是:
我在创建场景时插入项目。 On 位于 x=0(场景坐标),另一个位于 x=10(场景坐标) 使用此代码,我不能拖动 x=10 左侧的第二个项目。
似乎对 QGraphicsItem::scene() 的调用为这两个项目返回了不同的场景。
【问题讨论】:
标签: qt qgraphicsitem qgraphicsscene