【发布时间】:2011-04-16 15:30:20
【问题描述】:
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(),但没有结果。 我需要做什么才能立即在视图中获得新记录? 谢谢。
【问题讨论】:
标签: c++ database qt mvvm qtsql