1
它有点奇怪我看不到实际更改QStandardItemModel的“数据”的方法。例如:Qt获取QStandardItemModel的自定义数据类型的引用来更改它
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));
因此,我将实际添加一个std ::向量,其编号为1到模型的索引{0,0}。但是,我怎么会从没有访问TestStruct实例的地方向TestStruct的向量添加另一个数字?
“数据”函数返回一个QVariant,它可以作为TestStruct被转换,但它是一个副本,我需要一个参考...得到它?
此外,将结构作为QStandardItemModel中的项目后面的基本原理是什么?无论如何,你将无法直接在任何视图中使用它。你为什么这样做? – liaK 2010-07-12 07:21:07
我使用代表正确显示项目,因为我想。举个例子,假设你有一个拥有自己的可用颜色的汽车列表,并且你想要在QTableView中渲染它,但是当然,因为一辆汽车可以有许多可用的颜色,并将它们显示为组合框?你会怎么做?我对QT非常陌生。 – 2010-07-12 15:35:53