Ich habe hier eine Funktion geschrieben, die rekursiv Werte aus einer Datenbank ausließt, die über zwei zusammenhängende Felder in einer Art Baumstruktur miteinander verknüpft sind. Hier mal ein Beispiel:
Feld 1: iftopic = "", settopic = "Baum"
Feld 2: iftopic = "baum", settopic = "apfel"
Feld 3: iftopic = "apfel", settopic = ""
In diesem Beispiel ergäbe das in der Ausgabe eine ganze einfache Baumansicht (also QTreeWidget) mit einem Parent-Element, einem Child Element und einem diesem erneut untergeordnetem weiterem Child-Element.
Nun rackert sich mein PC aber beim Aufruf dieser Funktion unglaublich ab, ohne das was passiert. Die Maus ruckelt, und es ist manchmal schwer, das Fenster noch geschlossen zu bekommen. Es stimmt also vermutlich etwas mit der Rekursion (sagt man das so?) nicht, da die Datenbank bisher erst etwa 10 Einträge hat und das ganze eigentlich in wenigen Milli-Sekunden ablaufen sollte. Hier mal die Funtkion:
Code: Alles auswählen
QList<QTreeWidgetItem *> recursiveSqlTreeView(QString layer) {
QList<QTreeWidgetItem *> items;
QStringList outputrow;
QSqlQuery fetchLayer;
fetchLayer.exec("SELECT iftopic,settopic,output,regex FROM talking WHERE iftopic='"+layer+"'");
while (fetchLayer.next()) {
QString iftopic = fetchLayer.value(0).toString(); QString settopic = fetchLayer.value(1).toString();
QString output = fetchLayer.value(2).toString(); QString regex = fetchLayer.value(3).toString();
QStringList outputrow;
outputrow.append(regex); outputrow.append(output); outputrow.append(settopic); outputrow.append(iftopic);
QTreeWidgetItem *currentitem = new QTreeWidgetItem((QTreeWidget*)0, outputrow);
if(settopic!="") {
currentitem->addChildren(recursiveSqlTreeView(settopic));
}
items.append(currentitem);
}
return items;
}Liebe Grüße,
Jonathan