我在 QGraphicsScene 中有一个 QGraphicsItem 矩阵,当我单击一个元素时,它会改变它的颜色。这是用mousePressEvent()
. 我希望能够单击并按住然后将光标移到其他 QGraphicsItem 上并更改它们的颜色,从而触发它们的mousePressEvent()
.
问题是由于鼠标抓住了第一个元素,我单击“保留”了所有事件并且hoverEnterEvent()
没有被触发。我尝试添加ungrabMouse()
,mousePressEvent()
但没有帮助。
我想一种解决方案是使 QGraphicsitem 可以拖动并为此使用 QT 拖放功能。事实上我有这个:
void dragEnterEvent(QGraphicsSceneDragDropEvent *event)
{
changeColor();
}
当我从应用程序中将一些文本拖到元素上时,它就像我想要的那样工作,但当我“拖动”一个 QGrahphicsItem 时却不是。
那么,使 QGraphicsItem 可拖动以便能够在单击鼠标按钮悬停在事件上时触发事件的唯一解决方案是什么?