使用Qt将模型更新为Dom?

时间:2015-08-27 04:14:56

标签: c++ xml qt dom model-view-controller

我正在使用Qt4.8的模型/视图来开发应用程序。它可以做这样的事情:

  1. 加载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);
    
  2. 使用委托编辑模型的数据。

    //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);
    
  3. 模型的更改数据可以在XML(或QDomDocument)中恢复。

  4. 在步骤2之后,改变模型的数据。但是我如何更改QDomDocument的数据或将数据更新为Dom?

0 个答案:

没有答案