Qt拖拽事件小结
2016-02-15 16:04
169 查看
Qt拖拽事件可以通过帮助里面的几个例子可以很好的理解。
这里拿前段时间遇到的一个问题来讲解一下对于拖拽事件的以及Qt部件的一些理解。
左侧有两个QTextEdit,右侧是一个QListWidget,里面列举了一些颜色名称,想要实现的拖拽动作是通过点选拖拽右侧QListWidget中的内容,拖放到左侧的QTextEdit中。
代码实现思路有两种,
第一种,继承QTextEdit,重写dragEnter/dragMove/drop函数,这种方法从整体上理解较为简单,但是增加了代码量以及代码复杂性。
第二种,在QTextEdit的父窗口上重写dragEnter/dragMove/drop函数,随之而来的问题就是如何在drop函数中区分鼠标在released时,是落在哪个QTextEdit上面。
在 dropEvent函数中
通过对鼠标released时鼠标位置pos是否在textEdit的geometry中的方式,来判断最终鼠标落在了哪个QTextEdit中。
使用这种方法,在窗口布局的时候就不需要重新实现QTextEdit部件了,只需要在QTextEdit的父窗口之上重写拖拽事件的接收函数即可。
这里拿前段时间遇到的一个问题来讲解一下对于拖拽事件的以及Qt部件的一些理解。
左侧有两个QTextEdit,右侧是一个QListWidget,里面列举了一些颜色名称,想要实现的拖拽动作是通过点选拖拽右侧QListWidget中的内容,拖放到左侧的QTextEdit中。
代码实现思路有两种,
第一种,继承QTextEdit,重写dragEnter/dragMove/drop函数,这种方法从整体上理解较为简单,但是增加了代码量以及代码复杂性。
第二种,在QTextEdit的父窗口上重写dragEnter/dragMove/drop函数,随之而来的问题就是如何在drop函数中区分鼠标在released时,是落在哪个QTextEdit上面。
在 dropEvent函数中
通过对鼠标released时鼠标位置pos是否在textEdit的geometry中的方式,来判断最终鼠标落在了哪个QTextEdit中。
使用这种方法,在窗口布局的时候就不需要重新实现QTextEdit部件了,只需要在QTextEdit的父窗口之上重写拖拽事件的接收函数即可。
相关文章推荐
- Qt信号槽写法
- Qt窗口句柄
- qt event 判断事件类型
- 使用Qt开发俄罗斯方块游戏
- Qt平台下的精简版俄罗斯方块,代码80行(顺便散点分) [问题点数:40分,结帖人lxyppc]
- Qt做的俄罗斯方块游戏
- QT 学习网址
- Qt Charts 5.7.0 安装教程
- qt5.2中文显示为乱码问题
- pyqt5 菜单,工具栏,线程,matplotlib
- PyQt5 结合 matplotlib 时,如何显示其 NavigationToolbar
- 关于解决Qt OpenGL编译/usr/bin/ld: cannot find -lGL 问题的方法
- QT,QTOPIA,QT4,QTE等的区别,还有QTE在QT CREATOR上的设置
- QT程序自动寻找依赖的DLL(Qt官方开发环境生成的exe发布方式--使用windeployqt)
- Qt PaintEvent 绘制窗体背景图片
- qt 设置字体
- QT安装——Windows
- PyQt+OpenCV 录制保存、播放视频
- 用Qt实现一个桌面弹幕程序(二)--实现一个弹幕①
- 【N32926/N32916】QT系统的编译