ubuntuusers.de

[VALA-GTK3]Element aus TreeView bekommen

Status: Gelöst | Ubuntu-Version: Ubuntu 12.04 (Precise Pangolin)
Antworten |

MediasharpDE

Anmeldungsdatum:
20. Februar 2012

Beiträge: 106

Hallo! Einem TreeView von mir werden Elemente der selbstgeschriebenen Klasse Song hinzugefügt. Wie bekomme ich das entsprechende Song-Objekt heraus, wenn es angeklickt wird?

MfG

LSenf

Anmeldungsdatum:
12. Februar 2010

Beiträge: 11

Hai,

mit dem row_activated-signal kriegst du raus, welcher eintrag aktiviert wurde:

http://valadoc.org/#!api=gtk+-3.0/Gtk.TreeView.row_activated

Das gibt dir dann nen TreePath, der den pfad zu dem eintrag gibt.

Bspsw gibt

1
2
3
4
        tree_view.row_activated.connect((path)=>{
            int[] indices = path.get_indices();
            stdout.printf ("Selected: " + indices[0].to_string() + "\n");
        });

den 1. Index diesen Pfades aus.

Solltest du einen komplexeren Baum haben, musst du entsprechend mit den Indizes basteln.

MediasharpDE

(Themenstarter)

Anmeldungsdatum:
20. Februar 2012

Beiträge: 106

Ich möchte ja das hinzugefügt Song Objekt bekommen.

MediasharpDE

(Themenstarter)

Anmeldungsdatum:
20. Februar 2012

Beiträge: 106

Es ist auch kein TreeStore, sondern ein ListStore, der mit Elementen gefüllt wird in 2 spalten. Mehr nicht.

LSenf

Anmeldungsdatum:
12. Februar 2010

Beiträge: 11

Hallo,

würde behaupten, dass row_activated genauso bei einem ListStore funktioniert (wobei der TreePath dann eben nur den einen Index enthält).

Damit hättest du schonmal die Nummer des Eintrages.

Wenn du die Song-Objekte dann in einem Array behältst (mit der gleichen Reihenfolge, wie du die Namen in die Liste einträgst), kommst du über den Index vom TreePath auf das jeweilige Objekt im Array.

Vielleicht gibts auch eine Möglichkeit, die Song-Objekte direkt mit den TreeStore-Einträgen zu verbinden, dazu wüsste ich allerdings nichts.

MediasharpDE

(Themenstarter)

Anmeldungsdatum:
20. Februar 2012

Beiträge: 106

Die Idee mit dem Array ist gut. Das werde ich jetzt so auch mal versuchen, und zwar mit einer HashMap aus Gee.

Antworten |