Как сделать так, чтобы при клике на частично проверенном узле QTreeView был снят флажок?
У меня есть QTreeView
населенный QAbstractItemModel
подкласс, позволяющий конечным узлам проверяться пользователем. Если проверено правильное подмножество листовых узлов-потомков неконечного узла, то этот узел проверяется частично (Qt::CheckStateRole
является Qt::PartiallyChecked
).
В настоящее время, если пользователь нажимает на частично проверенный узел, состояние проверки изменяется на Qt::Checked
; Я хочу вместо этого очистить узел (Qt::Unchecked
). Есть ли способ настроить это поведение? Чтобы контролировать это с QCheckBox
Я бы переопределил QAbstractButton::nextCheckState()
, но я не могу найти ничего похожего для QTreeView
,
1 ответ
Реализуйте желаемое поведение в вашей модели setData
bool QAbstractItemModel::setData ( const QModelIndex & index, const QVariant & value, int role = Qt::EditRole )
For Qt::CheckStateRole
Так что когда вы получите в значении Qt::PartiallyChecked. Вы пересекаете дочерние элементы, чтобы установить Qt::Unchecked, а также изменяете текущий элемент.