Существует подкласс QSqlTableModel.
class TaskManager : public QSqlTableModel
{
Q_OBJECT
public:
explicit TaskManager(QObject *parent = 0){}
void initMode();
bool addTask(Task &task);
...
}
Это initModel ()
void TaskManager::initModel()
{
setTable(currenttasks);
setEditStrategy(QSqlTableModel::OnFieldChange);
select();
}
И это метод addTask
bool TaskManager::addTask(Task &task)
{
QSqlQuery query;
query.prepare("INSERT INTO currenttasks (description, numbers, imageid) "
"VALUES (:descr, :numbers, :imageid)");
query.bindValue(":descr", task.description);
query.bindValue(":numbers", task.numbers);
query.bindValue(":imageid", task.imageid);
bool res = query.exec();
reset();
return res;
}
Также есть представление о QML. Но если я нажму на кнопку «ДОБАВИТЬ», вызывая метод addTask (), я не смогу увидеть результаты. Вид не перерисован. Также есть прокси QMLifyProxyModel , унаследованный от QAbstractProxyModel, но я не верю, что это проблема.
Я вижу изменения в БД при перезапуске приложения.
Кажется, что модель не читает данные после обновления.
Кстати, я пытался создать layoutChanged () после моего запроса, безрезультатно.
Что мне нужно сделать, чтобы я сразу получил новые записи в представлении?
Спасибо.