Как отключить определенные элементы в ListView на основе QAbstractListModel?
У меня есть QAbstractListModel
Класс модели C++ и QtQuick2 ListView
,
Для тестирования я также создаю QtWidgets QListView
и приложите к той же модели для сравнения.
Я хочу сказать, какие элементы должны быть отключены, используя переопределенные QAbstractListModel::flags()
как в этом примере:
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;
}
К сожалению, QtQuick2 ListVie полностью игнорирует этот флаг, в то время как QListView не делает:
Я хочу, чтобы item2 и item5 также были отключены в QtQuick2. Как этого добиться?
1 ответ
Если вы используете CheckDelegate, вы должны настроить его через свойства делегата:
delegate: CheckDelegate {
text: model.display
checked: model.checkState
enabled: <here is your predicate, for example "index % 2" for each odd item>
}
Это потому, что QML использует другой подход для визуализации данных в отличие от QWidgets.