PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [QT4] QTreeView beim Verlassen Editor schliessen



xmarvel
12-01-2006, 16:46
Hi,

Wie kann ich schaffen das der Editor beim verlassen von QTreeView den Editor schliesst also wenn ich irgendwo anders im Fenster auswähle/rumklicke?
Der bleibt die ganze Zeit offen bevor ich nicht die Enter Taste betätigt habe.
Falls es wichtig ist die Daten fülle ich mittel setModel und die Editoren hab ich per Delegate Item eingefügt.

MfG
xmarvel

Enni
01-02-2006, 15:48
Hi,
du hast dir die Frage doch schon selbst beantwortet :)



wenn ich irgendwo anders im Fenster auswähle/rumklicke


..... dann Editor schließen....

Jedes Objekt in QT kann sog. Events senden und auch abfangen (das Signal - Slot Prinzip).
Solch ein Event wird z.B. ausgelöst, wenn ein Widget den Fokus erhält oder ihn, z.B. durch klicken in einen anderen Bereich, verliert. In der Dokumentation von QT sollte das genauer beschrieben sein, schau einfach mal rein :)

MfG Enni

xmarvel
01-02-2006, 20:51
Hi,
erstmal danke für eine Antwort.
Leider find ich kein Signal in der Doku was beim Verlassen eines Widget ausgelöst wird.
Vielleicht sollte ich lieber noch etwas detallierter beschreiben wo genau das Problem liegt.
Das Problem ist nämlich wenn der Editor nicht geschlossen und das Model von QTreeView gelöscht wird.
Und anschließend ein neues Model gesetzt wird bleibt der alte Editor erhalten und somit bekommt man eine CPU Auslastung von 100%.

Was ich probiert habe ist das ich wenn ich bevor ich den neuen Model setze den Editor zu schließen mittels treeview->closePersistentEditor(treeview->currentIndex())
doch der editor bleibt trotzdem offen.

MfG
xmarvel

Enni
02-02-2006, 15:42
Hmmmm, ich glaube so kommen wir nicht weiter....
Was genau ist denn dein "Editor" und ist ist er Bestandteil, also Child eines anderen Widgets ? Dein Quelltext wäre hier sehr hilfreich, weil deine Beschreibung leider noch zu viele Fragen offen lässt.


Schau dir in der Doku auch mal die Basisklassen an, also QWidget, QEvent, QCloseEvent und evtl. das Tutorial Application Example.
Dort wird beschrieben, wie man einen CloseEvent abfangen kann...

Du könntest den Editor auch mit dem Flag "Qt::WA_DeleteOnClose" erstellen, das sollte sicherstellen, dass er beim Schließen gelöscht wird....

Das sollte dir wohl weiterhelfen, denke ich :)