QDom (XML)
Verfasst: 8. April 2005 12:21
moin habe da ein kleines problemchen 
das ist mein xmlparser für bestimmte dateien
wenn ich aber jetzt in der ListBox ein Item anklick passiert rein nix
(das SIGNAL steht beim anklicken auf highlighted(int), im Qt Designer
erstelltes form). der aufruf: (abgeleitete klasse vom uifile)
mein problem ist:
Ich klick auf die 1 ListBox (1 Item, usw.) danach soll er die datei auslesen
und die namen in der 2 ListBox anzeigen, was läuft da falsch? bzw. was mah ich da falsch?
auschnitt aus der xmldatei: (was in group name steht soll er in der 2
QListBox anzeiegen, anschliessen drück ich den namen an soll er dann in
er 3 QListBox den option key anzeigen)
das ist mein xmlparser für bestimmte dateien
Code: Alles auswählen
void MasterLevel_XmlParser::readDataGroup( QFile &filename, QListBox *lbx )
{
QListBox *lbi = new QListBox( lbx );
QFile *file = new QFile( filename );
if (!file->open(IO_ReadOnly)) return; // kann datei nicht lesen
QDomDocument doc;
if (!doc.setContent(file)) return; // kann datei nicht parsen
QDomElement rootElement = doc.documentElement();
QDomNodeList groupName = rootElement.childNodes();
for (uint i = 0; i < groupName.length(); ++i)
{
QDomNode node = groupName.item(i);
if (node.isNull() || !node.isElement() || node.nodeName() != "group") continue;
QDomElement element = node.toElement();
QString name = element.attribute("name");
lbi->insertItem( name );
}
}
(das SIGNAL steht beim anklicken auf highlighted(int), im Qt Designer
erstelltes form). der aufruf: (abgeleitete klasse vom uifile)
Code: Alles auswählen
void QDAoCGR_MasterLevel::slotAuswahl_Reich()
{
QString alb, hib, mid;
alb.append( "masterlevel/albion.xml" );
hib.append( "masterlevel/hibernia.xml" );
mid.append( "masterlevel/midgard.xml" );
QFile alb_file( alb );
QFile hib_file( hib );
QFile mid_file( mid );
MasterLevel_XmlParser ml_parser;
/*
* Auswahl der einzelnen Reiche
* Übergebe das QFile und die QListBox an den parser
* wenn erfolge, zeige die einzelnen Namen in der 2
* QListbox: listBox_Klasse an.
*/
if ( listBox_Reich->isSelected(1) ){
ml_parser.readDataGroup( alb_file, listBox_Klasse );
}else if( listBox_Reich->item(2) ){
ml_parser.readDataOption( hib_file, listBox_Klasse );
}else if( listBox_Reich->item(3) ){
ml_parser.readDataGroup( hib_file, listBox_Klasse );
}else{
QMessageBox::information( this, "DAoC - GR", "Kann die angegebene Datei nicht finden." );
}
}
Ich klick auf die 1 ListBox (1 Item, usw.) danach soll er die datei auslesen
und die namen in der 2 ListBox anzeigen, was läuft da falsch? bzw. was mah ich da falsch?
auschnitt aus der xmldatei: (was in group name steht soll er in der 2
QListBox anzeiegen, anschliessen drück ich den namen an soll er dann in
er 3 QListBox den option key anzeigen)
Code: Alles auswählen
<Albion_ML application="DAoC-GR" version="v1" >
<group name="Waffenmeister" >
<option key="Kampfmeister" />
<option key="Kriegsherr" />
</group>
<group name="Kabbalist" >
<option key="Anrufer" />
<option key="Sturmlord" />
</group>
<group name="Kleriker" >
<option key="Kriegsherr" />
<option key="Vollender" />
</group>
<group name="Ordensbruder" >
<option key="Kampfmeister" />
<option key="Vollender" />
</group>
<group name="Infiltrator" >
<option key="Meisterspion" />
<option key="Kampfmeister" />
</group>
......