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がありますが、これが問題であるとは思いません。アプリケーションを再起動すると、DBの変更を確認できます。モデルは更新後にデータを読み取らないようです。
ちなみに、クエリの後にlayoutChanged()を発行しようとしましたが、結果がありません。ビューに新しいレコードをすぐに取得するには、何をする必要がありますか?ありがとう。