Implement a slot for the clicked signal of your QTreeView
and make sure to set the itens you want checkable in your addItens
function using QStandardItem::setCheckable
.
void MyClass::on_treeView_clicked(const QModelIndex &index) {
QStandardItem* l_itemClicked = m_model->itemFromIndex(index);
if (!l_itemClicked->rowCount()) return; // clicked item has no children
for (int i = 0 ; i < l_itemClicked->rowCount() ; ++i) {
QStandardItem* l_child = l_itemClicked->child(i);
bool l_isChecked = l_child->checkState() == Qt::Checked;
if (l_child->isCheckable())
l_child->setCheckState(l_isChecked ? Qt::Unchecked : Qt::Checked);
}
}