首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用QAbstractItemModel?

如何使用QAbstractItemModel?
EN

Stack Overflow用户
提问于 2012-04-20 17:02:58
回答 1查看 2.5K关注 0票数 2

我需要在QAbstractItemModel中使用QTreeView和PyQt。

在dropMimeData方法中,我希望删除源行(如果它是特定的MIME_TYPE)。如何获得源的行和parentIndex?或者我需要用其他方法来做。

def dropMimeData(self, mimedata, action, row, column, parentIndex):

EN

回答 1

Stack Overflow用户

发布于 2012-04-23 18:04:36

我的评论太长了,所以我想我应该从这个信息开始一个答案。

QAbstractItemModel是一个基类,当您需要一种不适合现有数据的自定义建模方法时,比如在哪里获取数据以及如何将它们表示为项时使用。它还没有做好开箱即用的准备,因为它需要实现许多方法。除非您有令人信服的理由这样做,否则您可能不应该从这个类开始,因为它需要更多的工作才能启动和运行。

由于只需要做拖放和使用基本项目,QStandardItemModel应该已经准备好供您使用了。您只需创建QStandardItems并填充模型。对于拖放,您可以对模型进行子类化,只需实现适当的拖放*事件和拖放*事件方法,以满足您的需要。

使用QStandardItemModel + QTreeView可以让您拥有多个视图,所有这些视图都使用相同的模型,同时将其可视化。但是,考虑到您说希望保留两组不同的独立数据,并且您对Qt还不熟悉,我强烈建议您只使用两个QTreeWidgets。QTreeWidget是视图和模型的所有包。这对你来说现在使用起来容易多了。

使用QTreeWidget,您将对它们进行子类化,并实现必要的拖放事件,就像对QTreeView一样,但是您不必再单独考虑模型了。

下面是一个链接,指向关于使用QTreeWidget:http://www.qtcentre.org/threads/5910-QTreeWidget-Drag-and-drop拖放的帖子

他们提到了建议实现的方法,以及您应该如何使用QTreeWidgetItem的子类来定义mimeData。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10250466

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档