QML/C++;主/细节组合框/列表视图
在Qt5.7的QuickControls2.0上,我有一个带有从属ListView的主组合框。当用户更改组合框选择时,从机如何更改 例如: 想象一下,我有一份人员名单,每个人都有一份汽车名单:QML/C++;主/细节组合框/列表视图,qml,qtquick2,master-detail,qtquickcontrols2,Qml,Qtquick2,Master Detail,Qtquickcontrols2,在Qt5.7的QuickControls2.0上,我有一个带有从属ListView的主组合框。当用户更改组合框选择时,从机如何更改 例如: 想象一下,我有一份人员名单,每个人都有一份汽车名单: 人1-车1,车2,车3 人2-车4 人员3-car5、car6、car7、car8 人4-车9,车10 人员必须出现在组合框上,当用户选择人员时,列表视图必须显示人员的车辆 我已经尝试过了,但是从未对数据成员调用carsRole,所以ListView没有显示任何内容 QML: C++ 枚举个人角色{
- 人1-车1,车2,车3
- 人2-车4
- 人员3-car5、car6、car7、car8
- 人4-车9,车10
枚举个人角色{
nameRole=Qt::UserRole+1,
卡斯罗
};
QVariant personmodel::数据(常量QModelIndex&index,int角色)常量
{
int row=index.row();
如果((行<0)| |(行>=_persons.size())){
返回QVariant();
}
交换机(角色){
案例名称角色:
返回(世界其他地区);
案例角色:{
返回QVariant::fromValue(新的CarsModel(行));
}
}
返回QVariant();
}
QHash PersonModel::roleNames()常量
{
QHash角色;
角色[名称角色]=“名称”;
角色[carsRole]=“汽车”;
返回角色;
}
如果将角色枚举公开给QML,则可以调用,该调用标记为自Qt 5.5起:
C++:
QML:
如果PersonModel
已经注册为QML类型,并且您在QML中创建了实例,那么这将已经起作用。如果personmodel
是上下文属性,则必须将personmodel
注册到QML,例如:
qmlRegisterUncreatableType("foo.bar", 1, 0, "PersonsModel", "PersonsModel is a context property"):
然后在QML中导入foo.bar 1.0。如果将角色枚举公开给QML,则可以调用,标记为自Qt 5.5起: C++: QML: 如果
PersonModel
已经注册为QML类型,并且您在QML中创建了实例,那么这将已经起作用。如果personmodel
是上下文属性,则必须将personmodel
注册到QML,例如:
qmlRegisterUncreatableType("foo.bar", 1, 0, "PersonsModel", "PersonsModel is a context property"):
然后在QML中导入foo.bar 1.0
enum PersonsRoles {
nameRole = Qt::UserRole + 1,
carsRole
};
Q_ENUM(PersonsRoles)
ComboBox {
id: comboBox
textRole: "name"
model: personsModel
}
ListView {
model: personsModel.data(personsModel.index(comboBox.currentIndex, 0), PersonsModel.carsRole)
}
qmlRegisterUncreatableType("foo.bar", 1, 0, "PersonsModel", "PersonsModel is a context property"):