如何在QDomNode
中找到指向具体QDomDocument
的指针?
void MainWindow::traverseNode(const QDomNode& node,int &objectCounter)
{
QDomNode domNode = node.firstChild();
while(!domNode.isNull()) {
if(domNode.isElement()) {
QDomElement domElement = domNode.toElement();
if(!domElement.isNull()) {
domElement.setAttribute("id",QString::number(objectCounter));
++objectCounter;
//and save pointer to this element somewhere
}
}
traverseNode(domNode,objectCounter);
domNode = domNode.nextSibling();
}
}
答案 0 :(得分:0)
只需使用&domNode
作为指向具体QDomNode
的指针。查看文档,这很可能会产生您想要的效果(在问题中没有明确说明):
更改返回的节点也将更改文档树中的节点。
答案 1 :(得分:0)
你可以这样做:
domNode = domNode.nextSibling();
m_currentDomNotePointer = &domNode; // You could also use a pointer vector.
然后您就可以在另一种方法中使用此m_currentDomNotePointer
:
MyClass::anotherMethod()
{
// use m_currentDomNotePointer
}
但是这一切看起来都有点徒劳,因为你可以保存const QDomNode& node
并重复使用与此方法类似的方法。除非你只有一个或几个特定的“容器”元素,否则我不明白你为什么要避免这种情况。