使用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
谢谢你的帮助!在
模型有some signals,每当插入或删除项的子项时,它就会激发,因此可以使用这些子项自动更新项。在
经过一些实验,我发现信号需要与queued connection一起使用,这样模型才有机会完全更新:
但除此之外,实现非常简单。不需要在项目中存储任何额外的信息,因为可以动态地执行更新。在
下面是一个基本的演示脚本:
^{pr2}$相关问题 更多 >
编程相关推荐