Glade树视图列表数据不可见,无法想象原因。

16

我的工作完成了99%,已经拥有了44/100。我有一个glade文件,使用gtkbuilder进行渲染后,它展示出来了。但是我的树状列表存储器中的数据除外。 我注意到默认情况下树形视图是不可见的,并将其设置为true时,树形视图区域会出现一个框,但我无法在树形视图中显示任何列表存储器中的项目。 我在glade中定义了一些默认数据,并通过编程方式添加了一些数据,但什么也没有显示出来。我是否错过了一些可见/隐藏选项?


就我所知,GTKBuilder 没有为我的列生成一个 cellrenderer(该列被定义为 gchararray),因为当我调用 get_column_cell_renderer 时,返回的是 NULL。 - stu
1
那么我如何在由gtkbuilder创建的列中设置单元格渲染器? - stu
3个回答

35
要在Glade中为您的树形视图添加单元格渲染器,请右键单击树形视图并选择"编辑"。这将带出树形视图编辑器。如果您点击"Hierarchy"选项卡,那么您可以添加或删除列。添加一列,然后右键单击它以获取您可以添加的单元格渲染器菜单。这样就可以实现此功能。

6
天哪,这真的不必这么复杂。我想我错误地假设树的定义将由模型定义。我没有意识到您还需要定义模型并指定树控件中的列。感谢您。虽然我仍然不理解文本,但至少我能得到列标题并添加行了。 - stu
4
明白了,只需指定单元格渲染器的文本以参考我的列表存储列数据,就让它正常工作了。 - stu
在JavaScript中,您只需 var n = document.createElement('option'); n.text = sel.text; n.value = sel.value; document.getElementById("listbox").options.add(n); 就可以工作,这似乎是错误的。 - stu
1
这是因为在GTK+中,视图和模型是分开的。您可以在同一数据上拥有多个视图,并在每个视图中显示不同的列集。 - Bernd Jendrissek
在当前版本的Glade中,“编辑”现在位于工具栏而不是右键菜单上。 - kolen

8
只是为了补充ptomato所说的,我想加入我所拥有的xml内容:
<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>

1
我还没有弄清楚如何/在哪里设置“text”属性;不过编辑文件以添加属性是有效的! - ThorSummoner
Glade编辑器似乎无法自动添加属性,这可能会导致原始问题。将单元格渲染器的文本字段设置为要使用的存储列的索引可以解决该问题。否则,渲染器不会查找值。 - AbstractDissonance

3

我已经弄清楚了...使用glade添加"'text'属性",以便您可以查看位于liststore中的数据....

1) 右键单击您的树状视图并选择"编辑"

2) 单击"层次结构"选项卡

3) 右键单击您添加的列并选择"添加子文本"

4) 在窗口右侧的"文本:"旁边,将unset更改为liststore/column文本类型。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接