Seite 1 von 1

ains problemQstringlist contains problem

Verfasst: 7. Mai 2010 03:04
von Doc_symbiosis
Ich habe folgende Funktion

Code: Alles auswählen

void KeyList::setChecked(QStringList *keyIds)
{
	for (int i= 0;i <keyIds->size(); i++) { qDebug() << keyIds->at(i) ;}
	if (keyIds->at(0) != "" ){
		for (int i = 0; i < mKeyList->rowCount(); i++) {
			if (keyIds->contains(mKeyList->item(i, 4)->text()), Qt::CaseSensitive) {
			  qDebug() << i << ". id:" << mKeyList->item(i, 4)->text();
				mKeyList->item(i, 0)->setCheckState(Qt::Checked);
			}
		}
	}
}
Die Ausgabe lautet z.B. (mit genau einer ID in der keyIds und zwei IDs in der mKeyList)

Code: Alles auswählen

"80A443212ECD733A" 
0 . id: "885D2954C26EBB54" 
1 . id: "80A443212ECD733A" 
Woran könnte es liegen, dass das qdebug innerhalb der zweiten if-Schleife ausgeführt wird, obwohl die erste ID nicht in der Liste enthalten ist?

Verfasst: 7. Mai 2010 08:29
von franzf
1) http://if-schleife.de/
2) Übergib doch die QStringList als (const) Referenz und nicht als Zeiger.
3) Ist das nicht dein Originalcode. Der hier sollte nicht mal kompilieren:

Code: Alles auswählen

if (keyIds->contains(mKeyList->item(i, 4)->text()), Qt::CaseSensitive) {
Was soll das "Qt::CaseSensitive" da noch?
Da ich in dem Codeausschnitt keinen Fehler erkennen kann, solltest du erstmal das Original posten.

Verfasst: 7. Mai 2010 11:46
von Doc_symbiosis
Danke schonmal für die Antwort.

zu 1): DOH!!!, Ja, diesen Begriff verwende ich immer wieder mal falsch...
/zu 2) Werd ich am WE mal ausprobieren..
zu 3) Kompilieren tut der Code ohne Fehler und Warnungen... Warum sollte er es denn nicht tun?

Das Casesensitive hab ich nun rausgeschmissen...

Verfasst: 8. Mai 2010 21:01
von Doc_symbiosis
Hm, mir ist überhaupt nicht klar warum, aber plötzlich funktioniert es genau so, wie ich das möchte, An der Methode hab ich allerdings nichts geändert...