我有一个由QAbstractItemModel
子类填充的QTreeView
,允许用户检查叶子节点。如果检查了非叶节点的后代叶节点的适当子集,则该节点被部分检查(Qt::CheckStateRole
为Qt::PartiallyChecked
)。
当前,如果用户点击部分选中的节点,则选中状态变为Qt::Checked
;我希望它清除节点(Qt::Unchecked
)。是否有一种方法来定制这种行为?要用QCheckBox
来控制这一点,我会覆盖QAbstractButton::nextCheckState()
,但我找不到QTreeView
的类似内容。
在你的模型中实现期望的行为setData
bool QAbstractItemModel::setData ( const QModelIndex & index, const QVariant & value, int role = Qt::EditRole )
For Qt::CheckStateRole
所以当你收到一个Qt::PartiallyChecked值。您遍历子项以设置为Qt::Unchecked,还可以更改当前项。