一个鼠标按几的QGraphicsItem在QT
-
25-09-2019 - |
题
我的QGraphicsItem的的在QGraphicsScene一个矩阵,当我点击一个元素它改变它的颜色。这与mousePressEvent()
实现。我希望能够点击并按住,然后将光标移到其它的QGraphicsItem的,并改变它们的颜色也因此引发他们mousePressEvent()
。
问题是,由于鼠标抓住我点击第一元素“保留”所有事件和hoverEnterEvent()
不会被触发。我尝试添加ungrabMouse()
到mousePressEvent()
但这并没有帮助。
我想一个解决办法是使的QGraphicsItem的拖拽能力,并使用QT拖放功能这一点。事实上,我有这样的:
void dragEnterEvent(QGraphicsSceneDragDropEvent *event)
{
changeColor();
}
当我从拖动应用在元素上一些文字它像我想它,但不是当我“拖”一个QGrahphicsItem。
所以是制造一种的QGraphicsItem dragable能够触发事件而鼠标悬停在与点击的鼠标按钮的唯一解决方案?
解决方案 2
我找到了解决自己。我说我所有的QGraphicsRectItem的一个QGraphicsItemGroup并实施了该组的活动。在集团:: MouseMoveEvent()我检查光标的位置和活动适用于它的孩子。它看起来像这样:
void Group::mouseMoveEvent ( QGraphicsSceneMouseEvent * event )
{
if (boundingRect().adjusted(0,0,-1,-1).contains(event->pos()))
{
if (CellCoordinate(event->pos()) != lastChangedCell_) {
lastChangedCell_ = CellCoordinate(event->pos());
modifyCell(CellCoordinate(event->pos()));
}
}
}
如果你有同样的问题,需要释放更多的信息感觉与我联系。
其他提示
我推荐使用mouseMoveEvent()
。
编辑:父mouseMoveEvent()
的QGraphicsView
不隶属于 StackOverflow