void DataDocument::setValue(const QString &data_id, const QVariant &val) { qfLogFuncFrame() << "data_id:" << data_id << "val:" << val.toString(); if(isEmpty()) { qfWarning() << "data_id:" << data_id << "val:" << val.toString() << "setValue() in empty document"; return; } if(data_id.isEmpty()) { qfWarning() << "data_id is empty"; return; } QVariant old_val; TableModel *m = model(); int r = currentModelRow(); old_val = m->value(r, data_id); if(m->setValue(r, data_id, val)) { if(old_val != val) { emit valueChanged(data_id, old_val, val); } } }