Qt获取QStandardItemModel的自定义数据类型的引用以对其进行更改

Qt获取QStandardItemModel的自定义数据类型的引用以对其进行更改,qt,reference,qtableview,Qt,Reference,Qtableview,这有点奇怪,我看不到一种方法可以真正改变QStandarItemModel的“数据”。例如: struct TestStruct { std::vector<int> testVector; void addNumber(int i){ //this method will modify the member vector } }; Q_DECLARE_METATYPE(TestStruct) QStandardItemModel* mo

这有点奇怪,我看不到一种方法可以真正改变QStandarItemModel的“数据”。例如:

struct TestStruct {
    std::vector<int> testVector;
    void addNumber(int i){  
        //this method will modify the member vector
    }
};
Q_DECLARE_METATYPE(TestStruct)

QStandardItemModel* model = QStandardItemModel(1,1);
QModelIndex index = model->index(0,0);
TestStruct test;
test.addNumber(1);
model->setData(index, qVariantFromValue(test));
struct TestStruct{
std::vector testVector;
void addNumber(int i){
//此方法将修改成员向量
}
};
Q_DECLARE_元类型(TestStruct)
QStandardItemModel*model=QStandardItemModel(1,1);
QModelIndex index=model->index(0,0);
TestStruct测试;
测试编号(1);
模型->设置数据(索引、qVariantFromValue(测试));
这样,我将有效地向模型的索引{0,0}添加一个编号为1的std::vector。但是,我如何从无法访问TestStruct实例的位置向该TestStruct的向量添加另一个数字呢


“data”函数返回一个QVariant,可以将其转换为TestStruct,但它是一个副本,我需要一个引用。。。是否获取它?

是,它将仅返回值,而不返回其引用

解决方法是,通过键入
QVariant
,可以获得
struct
。然后修改
testVector

修改后,再次调用

model->setData(index, qVariantFromValue(newTest));
其中
newTest
是带有修改向量的
struct


希望有帮助。

是的,它将只返回值,而不返回其引用

解决方法是,通过键入
QVariant
,可以获得
struct
。然后修改
testVector

修改后,再次调用

model->setData(index, qVariantFromValue(newTest));
其中
newTest
是带有修改向量的
struct


希望能有所帮助。

另外,将结构作为QStandarItemModel中的一项的基本原理是什么?无论如何,您将无法在任何视图中直接使用它。。你为什么这么做?我使用代理来正确显示我想要的项目。例如,假设您有一个具有自己可用颜色的汽车列表,并且您希望在QTableView中渲染该列表,但当然,由于一辆汽车可以有许多可用颜色,您是否将它们显示为组合框?你会怎么做?我对QT真的很陌生。另外,将结构作为QStandarItemModel中的一项的基本原理是什么?无论如何,您将无法在任何视图中直接使用它。。你为什么这么做?我使用代理来正确显示我想要的项目。例如,假设您有一个具有自己可用颜色的汽车列表,并且您希望在QTableView中渲染该列表,但当然,由于一辆汽车可以有许多可用颜色,您是否将它们显示为组合框?你会怎么做?我对QT真的很陌生。