我如何使单击QTreeView部分选中的节点取消选中该节点



我有一个由QAbstractItemModel子类填充的QTreeView,允许用户检查叶子节点。如果检查了非叶节点的后代叶节点的适当子集,则该节点被部分检查(Qt::CheckStateRoleQt::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,还可以更改当前项。

最新更新