QGraphicsView的事件传递
来源:互联网 发布:阳江市阳东区网络问政 编辑:程序博客网 时间:2024/06/07 08:51
问题描述:软件中用QGraphicsView的子类MainView来显示背景图像(QGraphicsPixmapItem)、各种图形标记(ShapeTagItem-自定义QGraphicsItem子类)。重写QGraphicsView的mousePressEvent方法用以实现场景的放大与缩小功能,同时重写ShapeTagItem的mousePressEvent方法来处理对图形标记的选中与拖拽。当两个方法同时重写时ShapeTagItem的mousePressEvent的事件无法响应。
问题分析:屏蔽QGraphicsView的mousePressEvent的方法,ShapeTagItem的mousePressEvent能够正常响应,说明ShapeTagItem的mousePressEvent事件被截获而未能处理。在QT的QGraphicsView架构中鼠标事件首先由QGraphicsView处理,若未处理传递给QGraphicsScene,然后再传递给对应位置的QGraphicsItem。QGraphicsView的mousePressEvent方法中除了进行自己关心的处理外,其它情况应让事件继续传递下去。
问题解决:
void MainView::mousePressEvent(QMouseEvent *event)
{
if(globalData.state == xx)
{
// do something
}
else {
QGraphicsView::mousePressEvent(event);
}
}
是把事件向上传递给父类去响应,就是在子类中“忽略”了这个事件。
- QGraphicsView的事件传递
- QGraphicsView与QGraphicsScene Qt窗体的消息传递
- QGraphicsView框架事件处理
- Qt的QGraphicsView框架
- Qt的QGraphicsView框架
- Qt的QGraphicsView框架
- Qt的QGraphicsView框架
- 关于QGraphicsView的坐标系
- Qt的QGraphicsView框架
- Qt的QGraphicsView框架
- QGraphicsView
- QGraphicsView
- QGraphicsView
- 纯粹透明背景的QGraphicsView
- 纯粹透明背景的QGraphicsView
- android 事件的传递
- IOS的事件传递
- TouchEvent事件的传递
- JavaScript-表单处理(3)
- git 的一些操作
- [LeetCode]Convert Sorted Array to Binary Search Tree
- Thinkpad E431 加固态硬盘
- DAY2-java内存模型
- QGraphicsView的事件传递
- OD简易修改仙4
- hdu 2527
- Http和Socket区别
- Groovy入门教程
- itoa()函数,10进制转换到(2~36)进制
- hdu 1423最长公共递增子序列
- 【线段树】Minimum Inversion Number(逆序数的求解)
- 2~10进制内转换到10进制