在 Qt 5.7,Quick Controls 2.0 上,我有一个主 ComboBox 和一个从属 ListView。当用户更改 ComboBox 选择时,从站如何更改?
举个例子:
想象一下,我有一个人员列表,每个人都有一个汽车列表:
- 人 1 - 车 1、车 2、车 3
- 人 2 - 车 4
- Person3 - car5、car6、car7、car8
- Person4 - car9, car10 ...
人必须出现在 ComboBox 上,当用户选择一个人时,列表视图必须显示人的汽车。
我已经尝试过了,但是从不调用数据成员的 carsRole,因此 ListView 不显示任何内容。
质量管理体系:
ComboBox {
textRole: "name"
model: personsModel
}
ListView {
model: personsModel.cars
}
C++
enum PersonsRoles {
nameRole = Qt::UserRole + 1,
carsRole
};
QVariant PersonsModel::data(const QModelIndex &index, int role) const
{
int row = index.row();
if ((row < 0) || (row >= _persons.size())) {
return QVariant();
}
switch (role) {
case nameRole:
return _persons.at(row);
case carsRole: {
return QVariant::fromValue(new CarsModel(row));
}
}
return QVariant();
}
QHash<int, QByteArray> PersonsModel::roleNames() const
{
QHash<int, QByteArray> roles;
roles[nameRole] = "name";
roles[carsRole] = "cars";
return roles;
}