我正在使用Qt4.8的模型/视图来开发应用程序。它可以做这样的事情:
加载xml并显示。 XML看起来像这样:
<Config>
<Symbol>
<Car_symbol>
<SymbolSize>12</SymbolSize>
<SymbolPath>e:/car.jpg</SymbolPath>
</Car_symbol>
<Ship_symbol>
<SymbolSize>10</SymbolSize>
<SymbolPath>e:/ship.jpg</SymbolPath>
</Ship_symbol>
</Symbol>
<Network>
<Server>192.168.0.2</Server>
<Port>5555</Port>
<Local>192.168.0.1</Local>
</Network>
<Mode>
<SingleMode>1</SingleMode>
</Mode>
</Config>
QDomDocument读取xml并将数据设置为model。 TreeView设置模型和委托如下:
class MyModel : public QAbtractItemModel
{
public:
//data();
//flags();
//headerData();
//index();
//parent();
//rowCount();
//columnCount();
void setData(QModelIndex& index, const QVariant& value, int role = Qt::EditRole);
void setupModelData(QDomDocument& doc); //set doc's tag to model's item
private:
TreeItem item;
}
QDomDocument domDoc("xmlDoc"); //global object
QFile file("config.xml");
//...open file correctly
docDoc.setContent(file);
MyModel model;
model.setModelData(docDoc);
QTreeview treeview;
treeview->setModel(&model);
MyDelegate delegate;
treeview->setItemDelegate(&delegate);
使用委托编辑模型的数据。
//click on delegate
delegate.setModelData(editor, model, index);
//index got from delegate, value is input value, role is EditRole
model.setData(index, value, role);
//item is a member of model, it saves the value
item.setData(value);
模型的更改数据可以在XML(或QDomDocument)中恢复。
在步骤2之后,改变模型的数据。但是我如何更改QDomDocument的数据或将数据更新为Dom?