我需要在QAbstractItemModel中使用QTreeView和PyQt。
在dropMimeData方法中,我希望删除源行(如果它是特定的MIME_TYPE)。如何获得源的行和parentIndex?或者我需要用其他方法来做。
def dropMimeData(self, mimedata, action, row, column, parentIndex):
发布于 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。
https://stackoverflow.com/questions/10250466
复制相似问题