QtQuick настраивает модель в TableView

поэтому у меня есть таблица в qmlfile, я пытаюсь установить модель из c ++.

Модель, которую я использую, — QSqlTableModel, если создать новое табличное представление и установить модель из c ++, это похоже на работу, но когда я передаю модель свойству модели в qmlfile, это не работает, и я не могу понять, почему …

код модели с ++:

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{
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 ++ я получаю новое окно с таблицей, которая правильно отображает таблицу … Я попытался добавить столбцы с тем же rolename, что я дал в c ++, и они тоже не будут заполняться …. вот скриншот обеих таблиц

введите описание изображения здесь

0

Решение

Вы должны указать, какие столбцы отображать с TableViewColumn, Это задокументировано в TableViewдокументация:

TableView {
TableViewColumn {
role: "title"title: "Title"width: 100
}
TableViewColumn {
role: "author"title: "Author"width: 200
}
model: libraryModel
}
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]