嗨我有qabstractitemmodel的虚拟数据元素,如:
m_roleNames.insert(FirstNameRole, QByteArray("firstName"));
m_roleNames.insert(LastNameRole, QByteArray("lastName"));
m_roleNames.insert(SubListRole, QByteArray("subList"));
QVariant SimpleListModel::data(const QModelIndex &index,
int role) const {
if (!index.isValid())
return QVariant(); // Return Null variant if index is invalid
if (index.row() > (m_items.size()-1) )
return QVariant();
DataObject *dobj = m_items.at(index.row());
switch (role) {
case Qt::DisplayRole: // The default display role now displays the first name as well
case FirstNameRole:
return QVariant::fromValue(dobj->first);
case LastNameRole:
return QVariant::fromValue(dobj->last);
case SubListRole:
return QVariant::fromValue(dobj->sublist);
default:
return QVariant();
}
}
我可以将firstName引用到listview。它没关系。但是我想使用像子列表[0]这样的列表类型。我不能将它引用到listview。
....
...
..
.
text: firstName
color: "black"
font.bold: true
}
Text {
text: subList[1]
color: "black"
}
}
}
}
}
.
..
...
....
修改 我添加了子列表类:`class SubObject:public QObject { Q_OBJECT 上市: SubObject(const QString& lesson,QObject * parent = 0): QObject的(母体), 教训(教训) {}
const QString lesson;
private:
// bool operator==(const SubObject* &other) const {
// return other->lesson == lesson;
// }
};
class DataObject :public QObject{
Q_OBJECT
public:
DataObject(const QString &firstName,
const QString &lastName,
const QList<SubObject*> &sublist):
first(firstName),
last(lastName),
sublist(sublist){}
QString first;
QString last;
QList<SubObject*> sublist;
};
#endif // DATAOBJECT_H`