Advertisement

开发拖放操作在Qt的Model-View框架中进行

阅读量:

QT的Model/View结构为各类界面的实现提供了高度的灵活性,并且具备良好的操作便利性。该框架中也集成了Drag and Drop功能,只需实现QAbstractItemModel类中的若干虚函数即可完成相关操作。在QT文档中,“Using Drag and Drop with Item Views”一节对这一功能进行了介绍,但表述略显模糊。基于个人实践经验,我对其实现过程进行总结并记录如下。

首先,需要为对应的View组件配置dragDropMode属性,其可选值包括DragOnly、DropOnly、DragDrop以及InternalMove等几种类型。若未进行设置,则无法完成Drag and Drop操作。其次,还需针对所使用的数据模型类(即继承自QAbstractItemModel的类)实现相应的虚函数。

Drag and Drop操作本质上分为两个独立步骤,分别对应拖动和释放两个阶段。

一、拖动操作所需实现的方法:

  1. 在flags函数中,对于允许执行拖动操作的项目(item),必须返回Qt::ItemIsDragEnabled属性标识,以确保这些项目可以被拖动;

  2. 需要实现mimeData方法,将拖动过程中涉及的数据进行封装,并生成一个QMimeData对象。该对象将在后续的释放操作中被接收方使用。

二、释放操作所需实现的方法:

  1. 同样在f

全部评论 (0)

还没有任何评论哟~