1

我有一个QTreeView由子类填充的QAbstractItemModel,允许用户检查叶节点。如果检查了非叶节点的后代叶节点的适当子集,则该节点被部分检查(Qt::CheckStateRoleis Qt::PartiallyChecked)。

当前,如果用户单击部分选中的节点,则检查状态将更改为Qt::Checked;我希望它改为清除节点(Qt::Unchecked)。有没有办法自定义这种行为?为了控制它,QCheckBox我会覆盖QAbstractButton::nextCheckState(),但我找不到任何类似的东西QTreeView

4

1 回答 1

1

在您的模型 setData 中实现所需的行为

bool QAbstractItemModel::setData ( const QModelIndex & index, const QVariant & value, int role = Qt::EditRole )

For Qt::CheckStateRole

因此,当您收到 Qt::PartiallyChecked 的价值时。您遍历项子项以设置为 Qt::Unchecked,并更改当前项。

于 2013-01-17T16:16:41.650 回答