sách gpt4 ăn đã đi

c++ - Qt:在另一个 QGraphicsItem C++ 中限制 QGraphicsItem 的可移动区域

In lại 作者:太空狗 更新时间:2023-10-29 23:51:17 25 4
mua khóa gpt4 giày nike

我想我的问题与此类似bưu kiện但在 C++ 中和在 QGraphicsItem 中。

我想将对象的可移动区域固定在另一个 QGraphicsItem 中。如果我试图将它移到外面,我希望我的对象留在里面。

也许这个想法是使用setParentItem()

有人知道如何限制 QGraphicsItem 内的可移动区域吗?

câu trả lời hay nhất

是的,你是对的。如 đây你必须重新实现 itemChange。来自qt文档

QVariant Component::itemChange(GraphicsItemChange change, const QVariant &value)
{
if (change == ItemPositionChange && scene()) {
// value is the new position.
QPointF newPos = value.toPointF();
QRectF rect = scene()->sceneRect();
if (!rect.contains(newPos)) {
// Keep the item inside the scene rect.
newPos.setX(qMin(rect.right(), qMax(newPos.x(), rect.left())));
newPos.setY(qMin(rect.bottom(), qMax(newPos.y(), rect.top())));
return newPos;
}
}
return QGraphicsItem::itemChange(change, value);
}

其中 scene() 指的是项目所在的 QGraphicsScene。如果您不使用 QGraphicScene,则必须适本地设置 QRectF(可能来自父项几何图形)。

关于c++ - Qt:在另一个 QGraphicsItem C++ 中限制 QGraphicsItem 的可移动区域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22512602/

25 4 0
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress