gpt4 book ai didi

pyqt - 如何使用 QAbstractItemModel?

转载 作者:行者123 更新时间:2023-12-04 05:49:31 26 4
gpt4 key购买 nike

我需要在 PyQt 中将 QAbstractItemModel 与 QTreeView 一起使用。

在 dropMimeData 方法中,我想删除源行(如果它是某个 MIME_TYPE。)如何获取源的行和 parentIndex?或者我是否需要通过其他方法来做到这一点。
def dropMimeData(self, mimedata, action, row, column, parentIndex):

最佳答案

我的评论太长了,所以我想我现在可以用这些信息开始回答了。

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

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

使用 QStandardItemModel + QTreeView 允许您拥有多个 View ,所有 View 都使用相同的模型并同时将其可视化。但是鉴于您说要保留两组不同的独立数据,并且您是 Qt 的新手,我强烈建议您只使用两个 QTreeWidget。 QTreeWidget 是 View 和模型的包罗万象的包。这对您来说现在使用起来会容易得多。

使用 QTreeWidget,您可以子类化它们并实现必要的拖放事件,就像 QTreeView 一样,但您不再需要单独担心模型。

以下是有关使用 QTreeWidget 进行拖放的帖子的链接:http://www.qtcentre.org/threads/5910-QTreeWidget-Drag-and-drop
他们提到了要实现的推荐方法,以及您应该如何使用 QTreeWidgetItem 的子类来定义 mimeData。

关于pyqt - 如何使用 QAbstractItemModel?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10250466/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com