@franzf
1.Vielen Dank das du dich mit meinem code beschäftig hast und danke für deinen Ratschlag
Nun zum Text:
Zitat : // Der Code ist irgendwie Chaos pur. Fängt bei den Schleifen an: //
Der Code läuft und macht genau das was er machen soll. Ist zwar noch nicht perfekt kann durch Verbesserungsvorschläge nur lernen.
Zitat : // Weshalb speicherst du eigentlich die ganzen Daten in einem riesigen QString-Array? //
Das hat den Grund das ich später um wieder auf genau diesen Ordner und seinen Parent zuzugreifen ich seine array position verwende. Hatte noch einen anderen Grund bin mir nicht mehr ganz genau sicher…
Zitat : // Daten statisch sind, kann das schon gehen //
Das sind sie tatsächlich, das einzige was sich ändert sind die Werte aber die Position bleibt gleich.
Zitat : // Wenn du dann eh schon eine eigene Struktur hast, ist der Weg über ein eigenes Model um einiges handlicher. //
Werde ich bei Gelegenheit versuchen umzusetzen
Zitat : // Wild irgendwelche Items anlegen, Zeilen hinzufügen oder entfernen, geht nicht gut. Halt trial&error. //
Da braucht man nicht drum rum reden, da hast du recht.
Nun zum Code. Also das mit dem anderen Konstruktor und der Neuzuweisung verstehe ich noch nicht ganz.
Aber mich gerade mehr Interessiert, er erstellt nun einen Baum bis in die 4 Unterebene.
Code…
Erstelle Ordner
(wenn Unterordner gefunden){
Schleife{Erstelle Ordner
(wenn Unterordner gefunden){
Schleife {Erstelle Ordner
}}}}
Und so weiter. Grüble gerade wie ich es bewerkstelligen kann alles in einer schleife zu packen..
Code: Alles auswählen
QString zeile[5000];
QFile daten(opxtp.toAscii());
daten.open(QIODevice::ReadWrite);
QTextStream in(&daten);
while (!in.atEnd()) {
zeile[za] = in.readLine();
za++;
//daten.close();
}
daten.close();
int hauptordner;
int ordner=0;
for(hauptordner=2;hauptordner<za;hauptordner++){
//u.textEdit->insertPlainText(QString::number(hauptordner));
// Hauptordner
qtree[hauptordner] = new QTreeWidgetItem(u.treeWidgetneu);
qtree[hauptordner] = u.treeWidgetneu->topLevelItem(ordner);
qtree[hauptordner]->setText(0,zeile[hauptordner].remove("<").remove(">").remove(" "));
ordner++;
// Suche nach Child
int kinder=0;
for(int unterordner=hauptordner+1;unterordner<za;unterordner++){
if(zeile[unterordner].indexOf("!--")!=-1){
qtree[unterordner-1]->setText(2,zeile[unterordner]);unterordner++;}
if(zeile[unterordner].remove(" ").indexOf("<",3)!=-1){
qtree[unterordner] = new QTreeWidgetItem(qtree[hauptordner]);
qtree[unterordner] = qtree[hauptordner]->child(kinder);kinder++;
QString varia=zeile[unterordner].section("/", 0, 0);
QString altername=zeile[unterordner].section("/", 1, 1);
qtree[unterordner]->setText(1,varia.remove(" ").remove(altername).remove("<"));
qtree[unterordner]->setText(0,altername.remove(" ").remove(">"));}
else{
if(zeile[unterordner].remove("<").remove(">").remove(" ").indexOf("/"+zeile[hauptordner])!=-1){/*u.textEdit->insertPlainText("Gefunden");*/break;}
else{
qtree[unterordner] = new QTreeWidgetItem(qtree[hauptordner]);
qtree[unterordner] = qtree[hauptordner]->child(kinder);kinder++;
qtree[unterordner]->setText(0,zeile[unterordner].remove("<").remove(">").remove(" "));
// Suche nach Child von Child Anfang
int kinder2=0;
for(int unterordner2=unterordner+1;unterordner2<za;unterordner2++){
if(zeile[unterordner2].remove("<").remove(">").remove(" ").indexOf("!--")!=-1){
qtree[unterordner2-1]->setText(2,zeile[unterordner2].remove("<").remove(">").remove(" "));unterordner2++;}
if(zeile[unterordner2].remove(" ").indexOf("<",3)!=-1){
//u.textEdit->setText(zeile[unterordner]);
qtree[unterordner2] = new QTreeWidgetItem(qtree[unterordner]);
qtree[unterordner2] = qtree[unterordner]->child(kinder2);kinder2++;
QString varia2=zeile[unterordner2].section("/", 0, 0);
QString altername2=zeile[unterordner2].section("/", 1, 1);
qtree[unterordner2]->setText(1,varia2.remove(" ").remove(altername2).remove("<"));
qtree[unterordner2]->setText(0,altername2.remove(" ").remove(">"));}
else{
if(zeile[unterordner2].remove("<").remove(">").remove(" ").indexOf("/"+zeile[unterordner].remove("<").remove(">").remove(" "))!=-1){/*u.textEdit->insertPlainText("Gefunden2");*/break;}
else{
qtree[unterordner2] = new QTreeWidgetItem(qtree[unterordner]);
qtree[unterordner2] = qtree[unterordner]->child(kinder2);kinder2++;
qtree[unterordner2]->setText(0,zeile[unterordner2].remove("<").remove(">").remove(" "));
// Suche nach Child von Child von Child Anfang
int kinder3=0;
for(int unterordner3=unterordner2+1;unterordner3<za;unterordner3++){
//u.textEdit->insertPlainText(zeile[unterordner2-1]);
if(zeile[unterordner3].remove(" ").indexOf("!--")!=-1){
qtree[unterordner3-1]->setText(2,zeile[unterordner3].remove(" "));unterordner3++;}
if(zeile[unterordner3].remove(" ").indexOf("<",3)!=-1){
//u.textEdit->setText(zeile[unterordner]);
qtree[unterordner3] = new QTreeWidgetItem(qtree[unterordner2]);
qtree[unterordner3] = qtree[unterordner2]->child(kinder3);kinder3++;
QString varia3=zeile[unterordner3].section("/", 0, 0);
QString altername3=zeile[unterordner3].section("/", 1, 1);
qtree[unterordner3]->setText(1,varia3.remove(" ").remove(altername3).remove("<"));
qtree[unterordner3]->setText(0,altername3.remove(" ").remove(">"));}
else{
if(zeile[unterordner3].indexOf("/"+zeile[unterordner2].remove(" "))!=-1){/*u.textEdit->insertPlainText("Gefunden3");*/break;}
else{
qtree[unterordner3] = new QTreeWidgetItem(qtree[unterordner2]);
qtree[unterordner3] = qtree[unterordner2]->child(kinder3);kinder3++;
qtree[unterordner3]->setText(0,zeile[unterordner3].remove("<").remove(">").remove(" ").remove(" "));
// Suche nach Child von Child von Child von Child Anfang
int kinder4=0;
for(int unterordner4=unterordner3+1;unterordner4<za;unterordner4++){
if(zeile[unterordner4].remove(" ").indexOf("!--")!=-1){
qtree[unterordner4-1]->setText(2,zeile[unterordner4].remove(" "));unterordner4++;}
if(zeile[unterordner4].remove(" ").indexOf("<",3)!=-1){
qtree[unterordner4] = new QTreeWidgetItem(qtree[unterordner3]);
qtree[unterordner4] = qtree[unterordner3]->child(kinder4);kinder4++;
QString varia4=zeile[unterordner4].section("/", 0, 0);
QString altername4=zeile[unterordner4].section("/", 1, 1);
qtree[unterordner4]->setText(1,varia4.remove(" ").remove(altername4).remove("<"));
qtree[unterordner4]->setText(0,altername4.remove(" ").remove(">"));}
else{
if(zeile[unterordner4].indexOf("/"+zeile[unterordner3].remove(" "))!=-1){/*u.textEdit->insertPlainText("Gefunden4");*/break;}
else{
qtree[unterordner4] = new QTreeWidgetItem(qtree[unterordner3]);
qtree[unterordner4] = qtree[unterordner3]->child(kinder4);kinder4++;
qtree[unterordner4]->setText(0,zeile[unterordner3].remove("<").remove(">").remove(" ").remove(" "));
}}}unterordner3=unterordner4;
// Suche nach Child von Child von Child von Child Ende
}}}unterordner2=unterordner3;
// Suche nach Child von Child von Child Ende
}}}unterordner=unterordner2;
// Suche nach Child von Child Ende
}}}hauptordner=unterordner;
}