на мой взгляд combobox/combobox_2 не сильно отличается от combobox value number="0"/combobox value number="1" по сути
На самом деле сильно отличается.
Я бы делал примерно так:
xml:
<config>
<main_form>
<autoriz_form>
<title>Авторизация</title>
<label>Пароль:</label>
<combobox number="0">
<value number="0">Диспетчер</value>
<value number="1">Администратор</value>
</combobox>
<combobox number="1">
<value number="0">hello</value>
<value number="1">hi</value>
</combobox>
</autoriz_form>
</main_form>
</config>
Создание xml (остального кода не знаю поэтому пишу псевдокодом, надеюсь понятно):
QDomDocument doc("Configuration");
QDomElement conf = doc.createElement("config");
doc.appendChild(conf);
QDomElement main_form = doc.createElement("main_form");
conf.appendChild(main_form);
QDomElement autoriz = doc.createElement("autoriz_form");
main_form.appendChild(autoriz);
QDomElement title = doc.createElement("title");
autoriz.appendChild(title);
title.appendChild(doc.createTextNode(interf->windowTitle())); // Обрати внимание чтобы не создавать QDomText
QDomElement label = doc.createElement("label");
autoriz.appendChild(label);
label.appendChild(doc.createTextNode(interf->ui_autoriz.label_9->text()));
цикл_по_виджетам_комбобокса {
QDomElement combobox = doc.createElement("combobox");
combobox.setAttribute("number", [номер комбобокса] );
autoriz.appendChild(combobox);
цикл_по_элементам_комбобокса {
QDomElement combobox_value = doc.createElement("value");
combobox_value.setAttribute("number", [номер_элемента_комбобокса] );
combobox.appendChild(combobox_value);
combobox_value.appendChild(doc.createTextNode( [текущий_в_цикле_комбобокс]->itemText( [номер_элемента_комбобокса] ) ));
}
}
Чтение xml:
QDomNode domNode = node.firstChild();
while(!domNode.isNull()) {
if(domNode.isElement()) {
QDomElement domElement = domNode.toElement();
if(!domElement.isNull()) {
if(domElement.tagName() == "autoriz_form")
domNode = domNode.nextSibling();
if(domElement.tagName() == "title")
interf->setWindowTitle(domElement.text().toUtf8());
if(domElement.tagName() == "label")
interf->ui_autoriz.label_9->setText(domElement.text().toUtf8());
if(domElement.tagName() == "combobox") {
// делаем что нада с комбобоксом
QDomElement vauleDomElement = domElement.firstChildElement("value");
// Проход по все значениям комбобокса
for (; !vauleDomElement.isNull(); vauleDomElement = vauleDomElement.nextSiblingElement("value")) {
// делаем что нада с с элементом комбобокса
}
// номера можно достать вызовом domElement.atribute("number")
}
}
}
traverseNode(domNode);
domNode = domNode.nextSibling();
}
А вообще по большому счету если порядок не важен, при такой схеме можно совсем без номеров обойтись
Если не понятно, выложи остальной код, и опиши задачу...