Qt 子类化QStandardItemModel以避免QAbstractItemModel

Qt 子类化QStandardItemModel以避免QAbstractItemModel,qt,qabstractitemmodel,qstandarditemmodel,Qt,Qabstractitemmodel,Qstandarditemmodel,我正在为一个类似树的结构实现一个函数,我决定尝试在它上面封装一个特定的类(我在这里称之为“appSpecificClass”) 基本上,我希望该类的一部分(如名称或某些数据)显示在模型中,并且当我更改模型(在编辑角色或拖放中)时,我希望这会对AppSpecific类产生影响(也就是说,当我更改模型上显示的名称时,与appSpecificClass的模型项关联的对象上的名称也会更改) 因此,我从使用appSpecificItem对QStandarItem进行子类化开始,appSpecificIte

我正在为一个类似树的结构实现一个函数,我决定尝试在它上面封装一个特定的类(我在这里称之为“appSpecificClass”)

基本上,我希望该类的一部分(如名称或某些数据)显示在模型中,并且当我更改模型(在编辑角色或拖放中)时,我希望这会对AppSpecific类产生影响(也就是说,当我更改模型上显示的名称时,与appSpecificClass的模型项关联的对象上的名称也会更改)

因此,我从使用appSpecificItem对QStandarItem进行子类化开始,appSpecificItem只有一个指向appSpecificClass的指针

但是,当从appSpecificItem更改数据时,它自然不会更改appSpecificClass,因为到目前为止,我还没有找到任何通过重载虚拟函数(或其他)与appSpecificItem的指针交互的方法

是否有人知道如何做到这一点/如果这是可能的?例如,如果

发出时,我可以更改appSpecificItem的指针


如果没有,是否有关于从头开始实现模型的好教程?我已经尝试了一些,但这不是一项容易的任务。理想情况下,我想要一个类似QStandardItemModel的模型,但要对其进行更多的抽象(这样我就可以将我的appSpecificClass放在上面).

检查QStandardItemModel是如何实现的。它使用QAbstractItemModel,因此可能会给您一些创建自己模型的提示。我同意@KamilKlimek的观点,尽管创建自己的模型需要大量的编码,但这是相当简单的。它可能比您现在尝试的更简单,也不容易出错。有一个Qt站点()上关于模型/视图编程的可升级教程。创建基本模型只需要重新实现文档中列出的几个方法:
QStandardItemModel::itemChanged ( QStandardItem * item )