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() 方法的“添加”按钮,我将看不到结果。视图不会重绘。还有一个从 QAbstractProxyModel 继承的代理QMLifyProxyModel但我不认为这是问题所在。当我重新启动应用程序时,我可以看到数据库中的更改。似乎模型在更新后没有读取数据。
顺便说一句,我在查询后尝试发出 layoutChanged() ,没有结果。我需要做什么才能立即在视图中获得新记录?谢谢。