You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

GTK4中如何用GtkListStore填充下拉框?调用代码无内容显示

解决GtkListStore填充GtkDropDown无显示项的问题

你的问题核心是GtkDropDown没有明确的规则从GtkListStore的行中提取显示内容——当gtk_drop_down_new的第二个参数传NULL时,下拉框不知道该渲染模型里的哪一列数据,所以无法显示列表项。

解决步骤如下:

  1. 确认GtkListStore的列结构
    先明确你创建station_list_store时定义的列类型和索引,比如如果是存储字符串选项的单列结构:

    // 示例:创建包含1个字符串类型列的GtkListStore
    widgets->station_list_store = gtk_list_store_new(1, G_TYPE_STRING);
    
  2. 创建列映射表达式
    使用gtk_expression_for_tree_model_column生成指向目标列的表达式,将其作为第二个参数传入下拉框构造函数:

    // 针对列索引0创建显示表达式
    GtkExpression *display_expr = gtk_expression_for_tree_model_column(0);
    // 绑定模型与显示规则,创建下拉框
    widgets->log_entries[entry_index] = gtk_drop_down_new(G_LIST_MODEL(widgets->station_list_store), display_expr);
    // 释放表达式对象避免内存泄漏
    g_object_unref(display_expr);
    
  3. 验证GtkListStore中存在有效数据
    确保你已经向模型中插入了数据,比如:

    GtkTreeIter iter;
    // 插入行并设置列0的文本内容
    gtk_list_store_insert_with_values(widgets->station_list_store, &iter, -1, 0, "站点A", -1);
    gtk_list_store_insert_with_values(widgets->station_list_store, &iter, -1, 0, "站点B", -1);
    

如果你的GtkListStore有多列,只需将gtk_expression_for_tree_model_column的参数改为对应文本列的索引即可。

内容的提问来源于stack exchange,提问作者Lev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 16:10:58