2010-11-29 6 views
12

Ich habe 99% 44/100 von allem funktioniert. Ich habe eine Glade-Datei, ich benutze Gtkbuilder, um es zu rendern und voila es kommt auf. Alles außer den Daten in meinem Treeview-Listspeicher. Ich bemerke standardmäßig, dass die Baumansicht nicht sichtbar ist, und wenn ich dies auf true setze, erscheint ein Feld im Baumansichtsbereich, aber ich kann keine meiner Liststore-Elemente in der Baumansicht anzeigen. Ich habe einige Standarddaten im Listenspeicher, der in Glade definiert ist, und ich programmiere auch einige, aber nichts wird angezeigt. Gibt es eine sichtbare On/Off-Option, die ich vermisse?Glade Treeview Liststore Daten nicht sichtbar, kann mir nicht vorstellen warum

+0

in der Nähe wie ich sagen kann gtkbuilder ist nicht mit einem Cellrenderer für meine Spalte (die als gchararray definiert), weil ich get_column_cell_renderer bekomme ich NULL zurück. – stu

+1

Wie setze ich einen CellRenderer in einer Spalte, die von gtkbuilder erstellt wurde? – stu

Antwort

29

Um einen Zell-Renderer zu Ihrer Baumansicht in Glade hinzuzufügen, klicken Sie mit der rechten Maustaste auf die Baumansicht und wählen Sie "Bearbeiten". Dies öffnet den Baumansichtseditor. Wenn Sie auf die Registerkarte "Hierarchie" klicken, können Sie Spalten hinzufügen oder entfernen. Fügen Sie eine Spalte hinzu und klicken Sie mit der rechten Maustaste darauf, um ein Menü mit Cell-Renderern anzuzeigen, die Sie hinzufügen können. Dies sollte den Trick machen.

+4

Guter Gott, es muss wirklich nicht so komplex sein. Ich vermute, ich habe die schlechte Annahme gemacht, dass die Definition des Baumes durch das Modell definiert würde. Ich wusste nicht, dass Sie das Modell definieren UND auch die Spalten in der Baumstruktur angeben müssen. Gargh. Vielen Dank. Ich bekomme zwar immer noch keinen Text, aber zumindest bekomme ich den Spaltenkopf und kann Zeilen hinzufügen. – stu

+4

Wenn es funktionierte, musste ich nur den Text des CellRenderers angeben, um auf meine Liststore-Spaltendaten zu verweisen. – stu

+0

Es scheint einfach falsch, dass Sie in Javascript können var n = document.createElement ('option'); n.text = sel.text; n.value = sel.value; document.getElementById ("Listenfeld"). Options.add (n); und es funktioniert. – stu

4

Nur um zu dem, was ptomato sagte, dachte ich im xml werfen würde für das, was ich habe:

<object class="GtkTreeView" id="portfolio_treeview"> 
    <property name="visible">True</property> 
    <property name="can_focus">True</property> 
    <property name="model">portfolio_liststore</property> 
    <property name="search_column">0</property> 
    <child> 
     <object class="GtkTreeViewColumn" id="treeviewcolumn4"> 
     <property name="title">ID</property> 
     <property name="clickable">True</property> 
     <property name="sort_indicator">True</property> 
     <property name="sort_column_id">0</property> 
     <child> 
      <object class="GtkCellRendererText" id="cellrenderertext4"/> 
      <attributes> 
      <attribute name="text">0</attribute> 
      </attributes> 
     </child> 
     </object> 
    </child> 
</object> 
+0

Ich habe noch nicht herausgefunden, wie/wo das 'Text' Attribut gesetzt werden soll; Obwohl das Bearbeiten der Datei zum Hinzufügen des Attributs funktioniert! – ThorSummoner

+0

Der Glade-Editor scheint die Attribute nicht automatisch hinzuzufügen, was zu dem ursprünglichen Problem führen kann. Wenn Sie das Textfeld für einen Cellrenderer auf den Index der Spalte des Geschäfts festlegen, die Sie verwenden möchten, wird das Problem gelöst. Andernfalls sucht der Renderer nicht nach den Werten. – AbstractDissonance

0

ich es herausgefunden ... „‚text‘Attribut“ hinzufügen Lichtung mit so Sie können Ihre Daten befindet sich in der liststore ....

1) Rechts Ihre treeview klicken und wählen Sie "Bearbeiten"

2) klicken Sie auf "Hierarchie" Registerkarte

3) Rechtsklick die Spalten-Ansicht Sie und wählen Sie "Add child Text"

4) Auf der rechten Seite des Fensters neben "Text:" ändern Sie die Unset auf die Liststore/Spalte Texttyp.

Verwandte Themen