Seite 1 von 1

[gelöst] QListWidgetItem - checkable

Verfasst: 8. Oktober 2012 08:49
von AQtNewbie
Erst einmal ein herzliches Hallo und Dankeschön.
Seit ein paar Tagen surfe ich auf diesem Portal und manchmal hat mich die ein oder andere Diskussion weiter gebracht.
Nun habe ich doch eine eigene Frage, die ich der Community hier gerne stellen möchte.

Folgendes Problem liegt vor.
Ein Dateipfad wird ausgelesen und in einen vector geschrieben. Aus diesem vector werden die Einträge geholt und für jeden Eintrag ein QListWidgetItem erstellt.
Hierzu liegt folgender, laufender Code vor:

Code: Alles auswählen

//... zuvor Vector auslesen usw.
QListWidgetItem *newItem = new QListWidgetItem;
        newItem->setCheckState(Qt::Unchecked);
        newItem->setFlags(Qt::ItemIsUserCheckable);
        //usw... 
Es liegen weder Fehlermeldungen noch Warnungen vor, alles wird korrekt erstellt und angezeigt, dennoch bleiben die checkboxes unveränderbar (von unckecked zu checked).
Kann mir jemand dazu weiterhelfen?

gez. AQtNewbie

Re: QListWidgetItem - checkable

Verfasst: 8. Oktober 2012 08:57
von archer
Schau dir mal die Flags in der Doku an.

Code: Alles auswählen

Qt::ItemIsSelectable
Qt::ItemIsEditable
Qt::ItemIsUserCheckable
Qt::ItemIsEnabled	
Du solltest mehr als nur das eine Flag setzen.

Re: QListWidgetItem - checkable

Verfasst: 8. Oktober 2012 09:06
von franzf
Vor allem bringts halt nix, da ItemIsUserCheckable standardmäßig an ist. Es braucht nur ein setCheckState, dann taucht die CheckBox auf ;)
Um das Defaultverhalten nicht zu ändern, macht man am besten

Code: Alles auswählen

item->setFlags(item->flags() | MeinFlagDasIchHinzufuegenWill);
Außer man will wirklich nur ein subset der default-flags.

Re: QListWidgetItem - checkable

Verfasst: 8. Oktober 2012 09:35
von AQtNewbie
Jetzt fällt es mir wie Schuppen von den Augen.
Wenn man so viel sucht und schaut, übersieht man doch tatsächlich das Wesentliche.. *facepalm*
Ich danke euch beiden vielmals!

Ich habe meinen Code nun folgendermaßen angepasst:

Code: Alles auswählen

QListWidgetItem *newItem = new QListWidgetItem;
        newItem->setCheckState(Qt::Unchecked);
        newItem->setFlags(newItem->flags() | Qt::ItemIsEditable);
        //usw...
    }

Re: QListWidgetItem - checkable

Verfasst: 8. Oktober 2012 09:38
von franzf
Editable muss es aber gar nicht sein für checkboxen.

Re: QListWidgetItem - checkable

Verfasst: 8. Oktober 2012 09:56
von AQtNewbie
Das war es aber. Davor konnte ich die einzelnen checkboxen vor den Einträgen nicht anklicken.

Re: QListWidgetItem - checkable

Verfasst: 8. Oktober 2012 11:59
von brax
franzf hat recht.

Code: Alles auswählen

Qt::ItemIsEnabled | Qt::ItemIsUserCheckable 
würde reichen

Re: QListWidgetItem - checkable

Verfasst: 8. Oktober 2012 16:45
von AQtNewbie
Habe es gerade ausprobiert und zwar nur:

Code: Alles auswählen

QListWidgetItem *newItem = new QListWidgetItem;
        newItem->setCheckState(Qt::Unchecked);
        newItem->setFlags(newItem->flags() | Qt::ItemIsUserCheckable);
Es lag folglich nur an dem fehlenden newItem->flags().

Danke nochmal an euch zwei!