Seite 1 von 1

QTreeWidgetItem und QPointer

Verfasst: 14. Oktober 2011 22:33
von kater
Hallo,
ich habe das Problem zwei Pointer auf ein Objekt an unterschiedlichen Orten zu speichern. Wird das Object über ein Pointer gelöscht, ist der andere Pointer ungültig.
Dagegen gibt es smart Pointer. Z.B. QPointer und ähnliches.

Meine Objekte sind vom Typ QTreeWidgetItem aber QPointer funktioniert nur mit Objekte die von QObject abgeleitet wurden. Ich könnte zwar meine eignen Klasse schreiben die von QTreeWidgetItem und QObject erbt, aber dann müsste ich auch eine Menge Funktionen von QTreeWidget überladen um sicher zu gegehn, dass ich auch immer meine Klasse vor mir habe.

Zum Beispiel:
QList<QTreeWidgetItem *> findItems ( const QString & text, Qt::MatchFlags flags, int column = 0 ) const

Gibt es keinen Besseren Weg?

Mir geht es auch um eben genannte Funktion. Ich möchte items finden und die Liste später mal durchlaufen. Aber in der Zwischenzeit könnten die Items gelöscht werden. Was macht man denn da?

Ich hoffe ihr versteht mein Problem.

Gruß

Re: QTreeWidgetItem und QPointer

Verfasst: 14. Oktober 2011 23:08
von franzf
Mir geht es auch um eben genannte Funktion. Ich möchte items finden und die Liste später mal durchlaufen. Aber in der Zwischenzeit könnten die Items gelöscht werden. Was macht man denn da?
Ganz einfach: Nur suchen, wenn du auch was damit machen willst. Es macht doch wirklich keinen Sinn, Operationen auf einem nicht mehr aktuellen Datensatz durchzuführen. Nicht nur gelöschte Items sind da ein Problem, sondern neu hinzugefügte aber in der alten Suche natürlich noch nicht gefundene Items.
Warum willst du denn unbedingt das Suchergebnis speichern?

Re: QTreeWidgetItem und QPointer

Verfasst: 14. Oktober 2011 23:20
von kater
Naja. Um die Items in der Liste nacheinander aufzurufen. Eben immer wenn der Benutzer "weiter" klickt.

Re: QTreeWidgetItem und QPointer

Verfasst: 15. Oktober 2011 07:24
von franzf
Schön dass langsam die Details klarer werden.
Was macht weiter? Was macht dann der User?

Re: QTreeWidgetItem und QPointer

Verfasst: 15. Oktober 2011 08:25
von kater
Ich versuche eben mein Problem zu verallgemeinern :)
Naja, das wars auch schon was passiert. Wann ich die Daten aus der Liste abrufe spielt ja nicht so groß eine Rolle.
Ich brauch eine Möglichkeit zu überprüfen ob mein Pointer noch gültig ist, oder eine Möglichkeit meine Liste immer sauber zu halten.
Aber ich seh keinen einfachen Weg das zu tun.

Re: QTreeWidgetItem und QPointer

Verfasst: 15. Oktober 2011 13:41
von kater
Ok, hab eine Lösung. Wenn auch anders wie gedacht. Es gibt die Klasse QTreeWidgetItemIterator. Damit kann ich den Baum durchlaufen wie ich gerade will, ohne eine extra Liste mit Pointer zu speichern :)