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 に答える