GTK4中如何用GtkListStore填充下拉框?调用代码无内容显示
解决GtkListStore填充GtkDropDown无显示项的问题
你的问题核心是GtkDropDown没有明确的规则从GtkListStore的行中提取显示内容——当gtk_drop_down_new的第二个参数传NULL时,下拉框不知道该渲染模型里的哪一列数据,所以无法显示列表项。
解决步骤如下:
确认GtkListStore的列结构
先明确你创建station_list_store时定义的列类型和索引,比如如果是存储字符串选项的单列结构:// 示例:创建包含1个字符串类型列的GtkListStore widgets->station_list_store = gtk_list_store_new(1, G_TYPE_STRING);创建列映射表达式
使用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);验证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
相关产品推荐
相关产品推荐

