[gelöst] QListWidgetItem - checkable

Alles rund um die Programmierung mit Qt
Antworten
AQtNewbie
Beiträge: 23
Registriert: 1. Oktober 2012 13:03

[gelöst] QListWidgetItem - checkable

Beitrag 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
Zuletzt geändert von AQtNewbie am 9. November 2012 12:21, insgesamt 2-mal geändert.
archer
Beiträge: 306
Registriert: 2. Februar 2006 09:56

Re: QListWidgetItem - checkable

Beitrag 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.
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Re: QListWidgetItem - checkable

Beitrag 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.
AQtNewbie
Beiträge: 23
Registriert: 1. Oktober 2012 13:03

Re: QListWidgetItem - checkable

Beitrag 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...
    }
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Re: QListWidgetItem - checkable

Beitrag von franzf »

Editable muss es aber gar nicht sein für checkboxen.
AQtNewbie
Beiträge: 23
Registriert: 1. Oktober 2012 13:03

Re: QListWidgetItem - checkable

Beitrag von AQtNewbie »

Das war es aber. Davor konnte ich die einzelnen checkboxen vor den Einträgen nicht anklicken.
brax
Beiträge: 208
Registriert: 11. Mai 2010 11:22

Re: QListWidgetItem - checkable

Beitrag von brax »

franzf hat recht.

Code: Alles auswählen

Qt::ItemIsEnabled | Qt::ItemIsUserCheckable 
würde reichen
AQtNewbie
Beiträge: 23
Registriert: 1. Oktober 2012 13:03

Re: QListWidgetItem - checkable

Beitrag 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!
Antworten