C++ Qt";“简单Dom模型”-&燃气轮机;插入行

C++ Qt";“简单Dom模型”-&燃气轮机;插入行,c++,qt,dom,model,C++,Qt,Dom,Model,我使用的是Qt的示例代码“SimpleDOM模型”()。 在QTreeView中读取和显示dom文档正在工作。删除模型中的行也没有问题。但我就是不知道如何插入行 我已经搜索了此问题,但只找到了未回答的问题(例如) 也许有人能想出办法帮我解决 我的代码: // DomModel.cpp bool DomModel::insertRow(int row, const QModelIndex &parent) { bool success; DomItem *parent

我使用的是Qt的示例代码“SimpleDOM模型”()。 在QTreeView中读取和显示dom文档正在工作。删除模型中的行也没有问题。但我就是不知道如何插入行

我已经搜索了此问题,但只找到了未回答的问题(例如)

也许有人能想出办法帮我解决


我的代码:

// DomModel.cpp

bool DomModel::insertRow(int row, const QModelIndex &parent)
{
    bool success;

    DomItem *parentItem = static_cast<DomItem*>(parent.internalPointer());

    beginInsertRows(parent, row, row);
    success = parentItem->insertChild(row);
    endInsertRows();

    return success;
}


// DomItem.cpp

bool DomItem::insertChild(int row)
{
    if(row < 0 || row > childItems.size())
    {
        return false;
    }

    QDomNode node;
    DomItem *item = new DomItem(node, row, this);
    childItems.insert(row, item);

    return true;
}
//DomModel.cpp
booldommodel::insertRow(int行、常量QModelIndex和父)
{
成功;
DomItem*parentItem=static_cast(parent.internalPointer());
beginInsertRows(父、行、行);
成功=父项->插入子项(行);
endInsertRows();
回归成功;
}
//DomItem.cpp
布尔域::insertChild(int行)
{
if(行<0 | |行>childItems.size())
{
返回false;
}
QDomNode节点;
领域*项目=新领域(节点、行、本);
子项。插入(行,项);
返回true;
}

我想你也需要在
QDomDocument
中插入相应的
QDomNode
,但是你只需要在
DomItem::insertChild()函数中创建一个QDomNode。Sry对于迟来的回答,我现在很忙。有时你只是忘记了显而易见的……现在,我在我的
QDomDocument
中插入一个新的
QDomElement
,并调用
DomModel::insertRow(…)
。我的
QTreeView
beginInsertRows(…)
通知有一个新行。谢谢你的回答@vahancho。