有一個QSqlTableModel的子類。更新後不重繪視圖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()後查詢,沒有結果。 我需要做什麼,我立即在視圖中獲得新記錄? 謝謝。