Bei einem Problem mit der findItem Funktion komme ich nicht weiter. Zumindest sehe ich nicht mein Problem ( Knoten im Kopf ?)
Ziel ist es ein Treeviewmodel abzufragen um gefundene Items dann zu markieren. Prinzipiell läuft das Problemlos.
Nur wenn ich den Code innerhalb der Kommentarzeilen ausführe, findet die Funktion nur den ersten Treffer.
Der nichtkommentierte Teil macht prinzipiell dasselbe, nur dass er wie gewünscht auch alle Treffer findet.
die Print(Material) Funktion liefert auch korrekt das entsprechende Suchkriterium, nur findItem ... findet nur beim erstmaligen Aufruf Treffer.
Code: Alles auswählen
def __Vorauswahl():
''' ---------------- Das hier findet nur beim ersten Lauf der for Schleife alle Treffer :
if len(ini['MaterialVorauswahl']) > 1 :
Materialvorauswahl = ini['MaterialVorauswahl'].split(",") # geliefert wird ein String mit Komma getrennten Wörtern
else :
Materialvorauswahl = ini['MaterialVorauswahl']
for Material in Materialvorauswahl:
print(Material) # Kontrolle zeigt dass Material richtig gewechselt wird in der for Schleife
for item in self.model5.findItems(Material, Qt.MatchContains ): # hier wird das Material NICHT richtig eingesetzt
if item.isCheckable():
item.setCheckState(QtCore.Qt.Checked)
print ( item.data(QtCore.Qt.DisplayRole), "Materialvorauswahlarray : ", Materialvorauswahl)
'' ------------------ Das hier macht doch prinzipiell nichts anderes, aber es findet alle Treffer :
if "Platten" in ini['MaterialVorauswahl']:
for item in self.model5.findItems("Platten", Qt.MatchContains ):
if item.isCheckable():
item.setCheckState(QtCore.Qt.Checked)
if "Kanten" in ini['MaterialVorauswahl']:
for item in self.model5.findItems("Kanten", Qt.MatchContains ):
if item.isCheckable():
item.setCheckState(QtCore.Qt.Checked)
if "Belag" in ini['MaterialVorauswahl']:
for item in self.model5.findItems("Belag", Qt.MatchContains ):
if item.isCheckable():
item.setCheckState(QtCore.Qt.Checked)
if "Oberfläche" in ini['MaterialVorauswahl']:
for item in self.model5.findItems("Oberfläche", Qt.MatchContains ):
if item.isCheckable():
item.setCheckState(QtCore.Qt.Checked)
if "Massiv" in ini['MaterialVorauswahl']:
for item in self.model5.findItems("Massiv", Qt.MatchContains ):
if item.isCheckable():
item.setCheckState(QtCore.Qt.Checked)