让多个QGraphicsItem处理一个鼠标事件
Qt C++ Let multiple QGraphicsItem handle one mouse event
我已经创建了一个对象Chartblock来实现QGraphicsItem。我的目标是创建这些对象的网格,当按下(并按住)鼠标按钮并移动到每个块上时,当光标进入每个块时,在每个块上执行一些操作。
由于QGraphicsItem在点击鼠标事件时捕获鼠标事件,其他项目将不会为mouseMoveEvent触发。然后,我基于QGraphicsItemGroup创建了一个对象来处理所有鼠标事件,但随后我需要通过某种方式将mousePressEvent/mouseReleaseEvent以及mouseMoveEvent传递给光标经过的每个子事件。
我是不是想太多了?看起来这样一个简单的操作应该不难创建,但是由于QGraphicsItems为自己保留鼠标事件,我不确定如何绕过它。我读过类似的情况,但似乎没有一个直接的答案。
编辑:我想这样做的一种方法是跟踪我在数组中创建的每一个QGraphicsItem的坐标/大小,然后获得光标在组mouseMoveEvent中的位置,并查看是否有命中。
我能够将一些类似的答案组合在一起创建一个解决方案;我放弃了将所有的QGraphicItem放在一个组中的想法,并将它们直接放在一个场景中。随着场景抓取所有鼠标事件,我有mouseMoveEvent检查当前位置是否在QGraphicsItem的顶部-如果是,执行一些操作。
我仍然需要尝试并获得itemAt()工作为我自己的类实现QGraphicsItem, itemAt只返回QGraphicsItem的,但我确信一些cast应该得到它的工作。
void ChartScene::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
{
QPointF mousePosition = event->scenePos();
QGraphicsItem* pItem = this->itemAt(mousePosition.x(), mousePosition.y());
}
相关文章:
- 我在窗口中有一个fltk Fl_Choice下拉菜单,但只能通过鼠标使用
- 如何使用 Turbo C++并行运行两个功能,一个用于键盘,一个用于鼠标?
- 发送到另一个窗口的鼠标移动消息不执行任何操作
- Qt. 忽略小部件中的任何鼠标事件,而不是另一个小部件
- 我正在制作一个自动化器,并且我需要自定义它才能在将鼠标钥匙放下时单击
- QT4.8嵌入.使用QCursor :: SetPos()调整鼠标输入会导致一个抽搐的光标
- CAD程序的数据结构.鼠标拾取和渲染一个数据
- 在 VC++ MFC 中创建另一个鼠标光标
- 当我在C++/SFML中按下鼠标按钮时,如何画一个球
- 使用鼠标在 Opengl 中绘制一个立方体
- 用鼠标在OpenCV中画一个框(使用Mat而不是IplImage)
- 在 GLUT 中用鼠标绘制一个矩形
- 创建一个从点到鼠标、OpenGL、C++的x、y的矢量
- 让多个QGraphicsItem处理一个鼠标事件
- 使用 WS_EX_NOACTIVATE 标志创建一个窗口,但在我释放鼠标之前无法拖动它
- 你如何减少cpu/帧,而有一个鼠标挂钩,而不引起鼠标拖拽?c++
- 过滤鼠标点击在Qt内的一个类
- 如何用c++编写一个基于眼动追踪的电脑鼠标
- c++中使用push_back的一个鼠标回调函数
- 有一个Quad跟随鼠标指针(没有Glut)