如何在QML中更新TableView?

时间:2015-05-04 00:46:38

标签: sql sqlite tableview qml

我正在编写一个结合了QML和C ++的程序。 TableView显示表格的一列。我可以正确添加或删除记录,但我无法更新TableViewTableView在添加或删除之前始终显示内容。

如何更新QWidget

PS:我不知道用QML和C ++代替GridView直接编码是不错的选择。

2 个答案:

答案 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的内置更多默认功能,我建议你从那里开始。

  1. 如何启用编辑

    覆盖标志功能以启用对项目的编辑,请参阅

    http://www.qtcentre.org/threads/38338-Can-t-edit-my-QTableView-cells

    http://doc.qt.io/qt-4.8/qabstractitemview.html#EditTrigger-enum

  2. 如何将更改同步回db

    您可以手动提交每次编辑的更改,或手动批量db事务中的所有更改,或者您可以只使用sqltablemodel

    http://doc.qt.io/qt-4.8/qsqltablemodel.html#EditStrategy-enum

  3. 但是,如果你需要更灵活的ui,或者它适用于多点触控设备,你应该采用QML方法

    1. 制作qabstractview模型

    2. 具有绑定到此qabstracttableview模型的qml视图。或使用qt控制工具包