Добрый день пишу метод редактирования, который вызывается по таймеру:
Задача: через n-ое время пробежать по всей таблице в и каждой строке проверить поле "live", если поле livе = 0, идти дальше, если поле 1, то тогда увеличить значение в той же строке, но другой колонки на 1.
Мой код:
void MainWindow::updateTime(){
for (int i = 0; i < m_history->rowCount(); ++i) {
QModelIndex index = m_history->index(i, 8); //Индекс активности клиента
QModelIndex indexVisit = m_history->index(i,4); //Редактируемый индекс
bool live = index.data.toBool(); //Клиент активен да/нет
bool flag; //Успешность операции
if (live) {
//QModelIndex indexVisit = m_history->index(i, 0);
int timeVisit = indexVisit.data(Qt::DisplayRole).toInt();
timeVisit+= 1;
flag = m_history->setData(indexVisit, timeVisit); //Возвращает false
qDebug()<<"Время должно быть добавлено";
qDebug()<<timeVisit;
} else {
qDebug()<<"Время не добавлено";
continue;
}
ui->tableHistory->update(); //Обновляем модель представлений
}
}
m_history объявлена как QSqlRelationalTableModel;
получаю ее из QSQLITE базы, информация из базы отображается.
UPDATE: Начал считать, но теперь обновление только в первой строке, начиная со второй строки flag возвращает как false