Я бы даже сделал так:
C++ (Qt)
void QListWidget::itemChanged(QListWidgetItem * item) {
int count = ui->listWidget->count(); // вычисляем количество вес строк в листвиджете
// перебираем все айтемы кроме самого верхнего
for (int i = 1; i < count; i++) {
QListWidgetItem * child = ui->listWidget->item(i); // берем айтем на каждой строке
child->setCheckState(Qt::Unchecked); // сбрасываем крестик
}
item->setCheckState(Qt::Checked)
}
А зацикливания не произойдёт? Состояния айтема меняем, соответственно снова же должен это слот вызваться? не надо это всё в
ui->listWidget->blockSignals(..) обернуть?