void LogSettingsPageWidget::sl_levelStateChanged(int state) { if (state == Qt::PartiallyChecked) { return; } disconnect(tableWidget, SIGNAL(itemChanged(QTableWidgetItem *)), this, SLOT(sl_catItemStateChanged(QTableWidgetItem *))); QCheckBox* cb = qobject_cast<QCheckBox*>(sender()); int column = 1 + qobject_cast<LogSettingsTopLineWidget*>(cb->parent())->level; assert(column >= 1 && column <=LogLevel_NumLevels); for (int row = 1; row < tableWidget->rowCount(); row++) { QTableWidgetItem* catItem = tableWidget->item(row, column); catItem->setCheckState(cb->checkState()); } connect(tableWidget, SIGNAL(itemChanged(QTableWidgetItem *)), this, SLOT(sl_catItemStateChanged(QTableWidgetItem *))); }