У меня есть таблица QTableWidget
, заполненная случайными целыми числами. В таблице 4 столбца. Последний столбец редактируемый.
Проблема в том, что если новое значение, введенное пользователем в столбце 4, больше, чем значение в столбце 2, тогда вся строка будет заполнена определенным цветом. И наоборот - если строка уже красная, а новое значение 4 столбцов меньше значения 2 столбцов, строка должна быть перекрашена в белый цвет. Вот код слота для сигнала dataChanged
:
connect(ui->tableWidget->model(), &QAbstractItemModel::dataChanged, this, [=](QModelIndex ind) {
int row = ind.row();
QModelIndex comparedInd = ui->tableWidget->model()->index(row, 2);
if (ind.data().toInt() < comparedInd.data().toInt()) {
for (int i = 0; i < 4; ++i) {
ui->tableWidget->item(row, i)->setBackground(QColor(244, 138, 149));
}
} else {
for (int i = 0; i < 4; ++i) {
ui->tableWidget->item(row, i)->setBackground(QColor(255, 255, 255));
}
}
});
Казалось бы, сигнал должен сработать один раз, когда пользователь закончит редактирование ячейки. Однако слот выполняется огромное количество раз, и в итоге приложение вылетает.
Подскажите, в чем здесь проблема?