gpt4 book ai didi

c++ - QGraphicsWidget的鼠标拖动。

转载 作者:太空狗 更新时间:2023-10-29 23:06:16 24 4
gpt4 key购买 nike

QGraphicsWidget如何实现鼠标拖动?

我试过

setFlag(QGraphicsItem::ItemIsMovable);

这有时会起作用(?)

enter image description here

例如,节点6我可以用鼠标移动,但其余节点不会移动。

此外,当我移动某个节点时,如何实现它,附加到该节点的边会随之移动。

最佳答案

真正的原因可能是您没有提供对 shape() 函数的覆盖。此函数用于定义“碰撞”几何体:您可以点击的对象部分。如果你直接从 QGraphicsItem 继承,它似乎在没有提供定义的情况下工作正常,但是 QGraphicsWidget 覆盖了 shape() 函数本身并且简单地返回 QWidget::rect()(也可能未在您的类中定义),因此当您从 继承时,不再使用 QGraphicsItem 的默认实现code>QGraphicsWidget!

如果您提供形状函数的定义,该函数返回围绕您为节点绘制的圆的椭圆,我敢打赌它可能会开始工作。例如:

QPainterPath MyGraphicsWidget::shape() const
{
QPainterPath path;
path.addEllipse(QPointF(0, 0), 25, 25);
return path;
}

这可能是一个老问题,但我自己花了 3 个小时试图解决这个问题。希望这个答案对外面的人有用,如果不是你 ;)

关于c++ - QGraphicsWidget的鼠标拖动。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16377892/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com