PyQt 5 Q标准件储存旧零件

2024-05-15 11:36:10 发布

您现在位置:Python中文网/ 问答频道 /正文

使用pyqt5,我一直在尝试使用QStandardItemModel和QStandarItems,在QTreeView情况下,通过拖放操作获取旧父级。在

如果可能的话,我真的想避免创建自己的模型。在

我当前的尝试是将当前父项作为“旧父项”创建时存储在该项中,并且不应在移动中更新它,以便我可以引用它更新旧父项中的值,然后将移动项中的“旧父项”更新为新的当前父项。在

但我似乎无法使其正常工作,以下是创建项时我试图用于存储“旧父级”的代码:

item.setData(parent.index(),(Qt.UserRole+3))

但是,当我运行以下错误时:

QVariant::save: unable to save type 'QModelIndex' (type id: 42).

在这一点上我不能参考老家长。。。在

我找到了一个使用c++的引用和大量的“指针转换”,但我无法找到如何将代码转换为Python和pyqt5的方法。在

C++引用:https://forum.qt.io/topic/1690/qvariant-save-load-unable-to-save-type-x/19

谢谢你的帮助!在


Tags: to代码模型savetype情况itempyqt5
1条回答
网友
1楼 · 发布于 2024-05-15 11:36:10

模型有some signals,每当插入或删除项的子项时,它就会激发,因此可以使用这些子项自动更新项。在

经过一些实验,我发现信号需要与queued connection一起使用,这样模型才有机会完全更新:

model.rowsInserted.connect(slot, type=QtCore.Qt.QueuedConnection)
model.rowsRemoved.connect(slot, type=QtCore.Qt.QueuedConnection)

但除此之外,实现非常简单。不需要在项目中存储任何额外的信息,因为可以动态地执行更新。在

下面是一个基本的演示脚本:

^{pr2}$

相关问题 更多 >