2015-05-04 3 views
0

Я кодирую программу, объединяющую QML и C++. В поле TableView показан столбец таблицы. Я могу добавить или удалить запись правильно, но я не могу обновить TableView, который всегда показывает содержимое перед добавлением или удалением.Как обновить TableView в QML?

Как обновить TableView?

PS: Я не знаю, является ли хороший выбор для кода с QML и C++ вместо QWidget напрямую.

+0

Вы можете добавить любые фрагменты кода или сообщения об ошибках –

+0

См. следующий код. – Jeff

ответ

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 
    ...... 
} 
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. как синхронизировать изменения обратно в БД

    можно ручная фиксация изменений за редактирование или вручную партий всех изменений в транзакции БД, или вы могли бы просто использовать sqltablemodel

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

Однако, если вам нужен более гибкий пользовательский интерфейс, или это для мульти-сенсорного устройства с, вы должны идти QML подход

  1. сделать модель qabstractview

  2. имеет QML просмотра, которые связывают к этой модели qabstracttableview. или с помощью наборов инструментов управления qt

+0

Спасибо за ваш совет. Теперь я использую QWidget, а не QML. QML для меня сейчас немного сложно. – Jeff

Смежные вопросы