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);
}
このコードは、アイテムがシーンの左側にドラッグされてサイズが大きくなるのを防ぐ必要があります。それはちょっとうまくいきます。私の問題は:
シーン作成時にアイテムに挿入します。オンはx=0(シーン座標)にあり、もう一方はx = 10(シーン座標)にあります。このコードでは、x=10の左側にある2番目のアイテムをドラッグできません。
QGraphicsItem ::scene()を呼び出すと、両方のアイテムに対して異なるシーンが返されるように見えます。