поэтому у меня есть tableview в qmlfile, я пытаюсь установить модель из C++.QtQuick настройка модели в TableView
Модель, которую я использую, это QSqlTableModel, если создать новое представление таблицы и установить модель из C++, похоже, это работает, но когда я передаю модель в свойство модели в qml-файле, она не работает, и я не могу понять, почему ...
C++ код модели:
QSqlTableModel * SqlEventModel::getTableData(QString tableName, QTableView *item){
const QString queryStr = "SELECT sql FROM sqlite_master WHERE tbl_name = '" + tableName +"' AND type = 'table'" ;
QSqlQuery query(queryStr);
if (!query.exec())
qFatal("Query failed");
QSqlDatabase db = QSqlDatabase::database(":memory:");
QSqlTableModel *model = new QSqlTableModel(item, db);
model->setTable(tableName);
model->setEditStrategy(QSqlTableModel::OnManualSubmit);
model->select();
int i=0;
while (query.next()){
model->setHeaderData(i, Qt::Vertical, query.value(i).toString());
i++;
}
return model;
}
, который возвращает модель, которая работает, если в C++ создать TableView и назначить модель, но когда я делаю это:
TableView{
id: table;
width: parent.width -100
height: parent.height -200
anchors.horizontalCenter: parent.horizontalCenter
anchors.top: parent.top
anchors.topMargin: 90
model: SqlEventModel.getTableData(GData.tName,table)
}
он не работает, он просто показывает пустую таблицу, даже если когда я отладки модель TableView не пусто ...
, если я добавлю:
QTableView *view = new QTableView();
view->setModel(model);
view->show();
как раз перед возвращением на C++ function Я получаю новое окно с таблицей, которая правильно отображает таблицу ... Я попробовал добавить столбцы с тем же именем, что и в C++, и они не будут заполняться либо ... вот скриншот обеих таблиц
не работает, а если добавить эти три строки в C++ код: "QTableView * вид = новый QTableView(); view-> setModel (модель); вид -> show(); появляется новое представление с таблицей, но одно из окна, которое я сделал на qml, похоже, не работает – heczaco
Тогда вам нужно предоставить полный пример. – Mitch
Позвольте мне изменить свой ответ ... – heczaco