*QT QGraphicsScene、QGraphicsItem、QGraphicsProxyWidget、QWidget间的事件传递
来源:互联网 发布:紫微斗数排盘网络中国 编辑:程序博客网 时间:2024/06/06 02:47
QT QGraphicsScene、QGraphicsItem、QGraphicsProxyWidget、QWidget间的事件传递
在项目开发中由于没有能够深刻理解QT QgraphicsScene场景中的事件传递的原理,导致浪费了两天时间。下面就将这两天对QT时间QT QgraphicsScene场景中的事件传递的理解分享一下。
QGraphicsScene为自定义画图场景,通过addItem()可以将自定义item放入scene场景,也可以通过QGraphicsProxyWidget代理类将QWidget封装为item中,由于图形场景层次叠加,势必导致鼠标事件被劫持。因此本位详细说明不同鼠标事件在不同层次间的传递方法。
鼠标单击事件:
void QGraphicsProxyWidget::mousePressEvent(QGraphicsSceneMouseEvent *event); 声明1
如果QWidget想接收鼠标点击事件,在鼠标点击事件中增加事件传递函数
QGraphicsProxyWidget::mousePressEvent(event); 函数1
而在重写QWidget的mousePressEvent事件时需要用函数2才能将事件传递到QWidget控件中
QWidget::mousePressEvent(event); 函数2
只有这样鼠标单击事件才能被传递至QWidget场景中。鼠标移动事件:
void QGraphicsProxyWidget::mouseMoveEvent(QGraphicsSceneMouseEvent *event) 声明2
QWidget被封装为QGraphicsItem后想实现移动目的,如果重写声明2函数实现移动,则需要在时间函数中增加
QGraphicsItem::mouseMoveEvent(event); 函数3
因为在场景内只有item能够实现移动。同样QWidget向下传递时间使用QWidget::mouseMoveEvent(event)鼠标释放事件:
void QGraphicsProxyWidget::mouseReleaseEvent(QGraphicsSceneMouseEvent *event) 声明3
QPushButton控件是通过QWidget::mouseReleaseEvent事件来触发。mouseReleaseEvent事件传递类似于mousePressEvent事件
0 0
- *QT QGraphicsScene、QGraphicsItem、QGraphicsProxyWidget、QWidget间的事件传递
- QT QGraphicsScene、QGraphicsItem、QGraphicsProxyWidget、QWidget间的事件传递
- Qt绘图QGraphicsView、QGraphicsScene、QGraphicsItem
- 对QT 中QGraphicsView QGraphicsScene QGraphicsItem的初步理解
- Qt绘图之QGraphicsScene QGraphicsView QGraphicsItem详解
- QGraphicsProxyWidget 与 QWidget 点滴
- QGraphicsProxyWidget 与 QWidget 点滴
- QGraphicsView与QGraphicsScene Qt窗体的消息传递
- Qt QGraphicsProxyWidget
- QGraphicsScene QGraphicsView QGraphicsItem-----
- QGraphicsScene QGraphicsView QGraphicsItem
- QT QGraphicsItem飞舞的蝴蝶
- QGraphicsItem子类对象间消息的传递与获取
- 在QGraphicsScene中嵌入QWidget
- Qt中基于QGraphicsItem类的重载鼠标事件函数的教训
- Qt中基于QGraphicsItem类的重载鼠标事件函数的教训
- Qt5笔记之QGraphicsScene QGraphicsView QGraphicsItem
- Qt中QGraphicsItem/View/Scene的哲学
- 关于webView加载html代码 图片拦截修改
- Android adb shell am 命令介绍
- APP跳转系统设置
- Archive出现Code Sign error: No matching provisioning profile found:......
- Android开发--RecyclerView使用,看AndroidL新特性,android5.0新特性
- *QT QGraphicsScene、QGraphicsItem、QGraphicsProxyWidget、QWidget间的事件传递
- [SqlHandle] java mysql语法 sql语句拼接工具简类
- 程序员业余项目死亡的原因
- Java内存与垃圾回收调优
- struts2使用Convention Plugin在weblogic上以war包部署时,找不到Action的解决办法
- [iOS]解决pod search的仓库版本低于github仓库版本的方法
- java的锁机制
- 算法学习之Asymptotic Analysis
- Android系统构成