Не злоупотребляйте конкатенацией строк, так как это может сбивать с толку, вместо этого вы можете использовать метод createObject компонента, который может назначать свойства более читабельным образом.
Чтобы добавить элементы в В модели нет необходимости использовать X, вместо этого используйте метод append, где вы можете передать словарь, делая код более читабельным.
Page {
id: tblPage
title: qsTr("Table")
Component{
id: columnComponent
TableViewColumn{
Component.onCompleted: console.log("YEY")
}
}
ListModel {
id: lmTable
}
function buildColumns() {
var rc = vConnection.recCount
var fc = vConnection.fldCount
for(var i = 0; i < fc; ++i){
var col = columnComponent.createObject(tbl, {"role": vConnection.tFields[i],
"title": vConnection.tFields[i],
"width": (tblPage.width / vConnection.fldCount)})
tbl.addColumn(col)
}
for(var j = 0; j < rc; ++j){
var d = {};
for(var f = 0; f < fc; ++f){
d[vConnection.tFields[f]] = vConnection.tRecords[f + rc]
}
lmTable.append(d)
}
}
TableView {
id: tbl
anchors.fill: parent
model: lmTable
}
Component.onCompleted: buildColumns()
}