سلام
من میخوام تمام رکوردهای Tableview رو در فایل xml ذخیره کنم. و بتونم رکوردهای ذخیره شده در فایل xml رو در TableView نمایش بدم.
این کد به نظرم منطقی هست ولی هیچ رکوردی در Tableview نمایش داده نمی شه.

فایل xml:
<?xml version="1.0" standalone="yes"?><NewDataSet>
<record prop1=".." prop10="..." />
.......
<record prop1=".." prop10="..."/>
</NewDataSet>



main.qml:
TableView {      id: tablemodel
anchors.fill: parent
TableViewColumn {
role: "col1"
title: " "
width: 30
}
model: myXML.newDataList
// model: ListModel {
// id: myModel
// }

}


myxml.h:
class MyXML: public QObject{
Q_OBJECT
//...
Q_PROPERTY(QList<QObject*> newDataList READ getDataList WRITE setDataList NOTIFY dataListChanged)
public:
MyXML();
MyXML(QString);
//...
Q_INVOKABLE QList<QObject*> getDataList() const;
public slots:
//...
void setDataList(QList<QObject*> dataList);
void saveXMLFile();
void readXMLFile();


signals:
//...
void dataListChanged(QList<QObject*>);
private:
//...
QList<QObject*> newDataList;

};


myxml.cpp:
void MyXML::readXMLFile(){    
//...
while(!reader.atEnd()) {
reader.readNext();
if (reader.isStartElement()) {
//...
if (reader.name() == "record") {
foreach(const QXmlStreamAttribute &attr, reader.attributes()){
newDataList.append(new DataObject("col1", attr.value().toString()));
}
}
}
}

}


dataobject.h:
class DataObject:public QObject{
Q_OBJECT
Q_PROPERTY(QString newName READ name WRITE setName NOTIFY nameChanged)
Q_PROPERTY(QString newValue READ value WRITE setValue NOTIFY ValueChanged)
public:
DataObject();
DataObject(QString,QString);
Q_INVOKABLE QString name() const;
Q_INVOKABLE QString value() const;
public slots:
void setName(QString name);
void setValue(QString value);
signals:
void nameChanged(QString);
void valueChanged(QString);
private:
QString newName;
QString newValue;

};

dataobject.cpp:
#include "dataobject.h"DataObject::DataObject()
{
}
DataObject::DataObject(QString name,QString value)
{
newName=name;
newValue=value;
}
QString DataObject::name() const
{
return newName;
}
void DataObject::setName(QString name)
{
if (name != newName)
{
newName =name;
emit nameChanged(newName);
}
}
QString DataObject::value() const
{
return newValue;
}
void DataObject::setValue(QString value)
{
if (value!= newValue)
{
newValue = value;
emit valueChanged(newValue);
}

}