我正在编写一个结合了QML和C ++的程序。 TableView
显示表格的一列。我可以正确添加或删除记录,但我无法更新TableView
,TableView
在添加或删除之前始终显示内容。
如何更新QWidget
?
PS:我不知道用QML和C ++代替GridView
直接编码是不错的选择。
答案 0 :(得分:0)
main()
{
//other code
......
MySqlModel *model = new MySqlModel;//class MySqlModel : public QSqlTableModel
model->QSqlQueryModel::setQuery("SELECT FieldName1 FROM Table");
QQmlApplicationEngine engine;
engine.rootContext()->setContextProperty ("SQQL", model);
engine.load(QUrl(QStringLiteral("qrc:/main.qml")));
//other code
......
}
在qml中:
TableView{
//other code
......
model: SQQL
//other code
......
}
答案 1 :(得分:0)
基于QWidget的内置更多默认功能,我建议你从那里开始。
如何启用编辑
覆盖标志功能以启用对项目的编辑,请参阅
http://www.qtcentre.org/threads/38338-Can-t-edit-my-QTableView-cells
http://doc.qt.io/qt-4.8/qabstractitemview.html#EditTrigger-enum
如何将更改同步回db
您可以手动提交每次编辑的更改,或手动批量db事务中的所有更改,或者您可以只使用sqltablemodel
http://doc.qt.io/qt-4.8/qsqltablemodel.html#EditStrategy-enum
但是,如果你需要更灵活的ui,或者它适用于多点触控设备,你应该采用QML方法
制作qabstractview模型
具有绑定到此qabstracttableview模型的qml视图。或使用qt控制工具包