我有一个QListView
C ++模型类和一个QtQuick2 QAbstractListModel::flags()
。
出于测试目的,我还创建了一个QtWidgets Qt::ItemFlags flags(const QModelIndex& index) const
{
Qt::ItemFlags f = QAbstractListModel::flags(index);
if(index.isValid())
{
f |= Qt::ItemIsUserCheckable;
if(index.row() % 3 == 2)
f &= ~Qt::ItemIsEnabled;
}
return f;
}
并附加到同一模型进行比较。
我想告诉视图应该使用覆盖的{{1}}禁用哪些项目,如下例所示:
{{1}}
可悲的是,QtQuick2 ListVie完全忽略了这个标志,而QListView没有:
我希望在QtQuick2中也禁用item2和item5。如何实现?
答案 0 :(得分:0)
如果您使用CheckDelegate,则应通过委托属性对其进行调整:
delegate: CheckDelegate {
text: model.display
checked: model.checkState
enabled: <here is your predicate, for example "index % 2" for each odd item>
}
这是因为QML使用不同的方法来显示与QWidgets相反的数据。