GTK列表显示文本和图片

使用GtkTreeView控件显示包含文本和图片的列表,GtkTreeView/GtkListStore或者GtkTreeView/GtkTreeModel使用的是MVC设计理念。
关于MVC:

M层: model 数据模型层(处理数据的增删改查) 提供数据
V层: Views 视图层 (数据展示) 渲染数据
C层: controller 控制层(处理业务逻辑) 调用数据渲染视图
使用MVC的目的是将M和V的实现代码分离,从而使同一个程序可以使用不同的表现形式。

GtkListStore、GtkTreeModel、GtkTreeView
GtkListStore 一个能被GtkTreeView使用的列表数据结构
GtkTreeModel 是GtkTreeView的接口
通过GTK_TREE_MODEL宏可以将GtkListStore转换成GtkTreeModel
代码


#include <gtk/gtk.h>int main(int argc, char *argv[])
{GtkWidget *window;GtkWidget *treeview;GtkListStore *liststore;GtkTreeViewColumn *column;GtkCellRenderer *cell;GtkTreeIter iter;GdkPixbuf *pixbuf;// 初始化GTKgtk_init(&argc, &argv);// 创建窗口window = gtk_window_new(GTK_WINDOW_TOPLEVEL);gtk_window_set_default_size(GTK_WINDOW(window), 200, 200);// 创建列表存储liststore = gtk_list_store_new(2, GDK_TYPE_PIXBUF, G_TYPE_STRING);// 添加图像和文本到列表存储pixbuf = gdk_pixbuf_new_from_file("image.jpg", NULL);gtk_list_store_append(liststore, &iter);gtk_list_store_set(liststore, &iter, 0, pixbuf, 1, "Image 1", -1);//添加图片和文本到行g_object_unref(pixbuf);//释放资源pixbuf = gdk_pixbuf_new_from_file("image2.jpg", NULL);gtk_list_store_append(liststore, &iter);gtk_list_store_set(liststore, &iter, 0, pixbuf, 1, "Image 2", -1);g_object_unref(pixbuf);// 创建列表视图treeview = gtk_tree_view_new_with_model(GTK_TREE_MODEL(liststore));// 创建图像列cell = gtk_cell_renderer_pixbuf_new();column = gtk_tree_view_column_new_with_attributes("Image", cell, "pixbuf", 0, NULL);//创建名为Image的图像列gtk_tree_view_append_column(GTK_TREE_VIEW(treeview), column);//添加图像列// 创建文本列cell = gtk_cell_renderer_text_new();column = gtk_tree_view_column_new_with_attributes("Text", cell, "text", 1, NULL);//创建名为Text的文本列gtk_tree_view_append_column(GTK_TREE_VIEW(treeview), column);//添加文本列// 将列表视图添加到窗口中gtk_container_add(GTK_CONTAINER(window), treeview);// 显示窗口gtk_widget_show_all(window);// 运行主循环gtk_main();return 0;
}

结果
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/19730.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

window电脑修复网络不能正常

问题描述 问题的起点是我打开了OpenAPI公司的GPT&#xff0c;在回答的过程中响应很慢&#xff0c;然后自己开始尝试切换连接的服务器&#xff08;这里使用到了网络代理&#xff09;&#xff0c;最后自己做了一个操作是 代理软件的这个菜单里面的增强模式选项&#xff0c;结果…

Flink基本原理剖析讲解

1.Flink简介 Flink是一个批处理和流处理结合的统一计算框架&#xff0c;其核心是一个提供了数据分发以及并行化计算的流数据处理引擎。它的最大亮点是流处理&#xff0c;是业界最顶级的开源流处理引擎。 Flink最适合的应用场景是低时延的数据处理&#xff08;Data Processing…

Proton 推出开源密码管理器,兼身份管理器

Proton 是由来自欧洲核研究组织 (CERN) 的科学家于 2014 年在瑞士日内瓦创立的一家公司&#xff0c;其最知名的应该就是电子邮件服务 Proton Mail&#xff0c;主打端到端加密、安全和隐私保护。Proton 由科学家领导&#xff0c;其中包括万维网的发明者 Tim Berners-Lee。 该公…

git HEAD detached from

git HEAD detached from 解决&#xff0c;checkout切换分支即可&#xff0c;比如切换到master分支&#xff1a; git checkout master git gerrit code review提交代码HEAD:resf/for/_res/for的提交格式_zhangphil的博客-CSDN博客git gerrit code review提交代码HEAD:resf/for/如…

Flink实时任务性能调优

前言 通常我们在开发完Flink任务提交运行后&#xff0c;需要对任务的参数进行一些调整&#xff0c;通常需要调整的情况是任务消费速度跟不上数据写入速度&#xff0c;从而导致实时任务出现反压、内存GC频繁&#xff08;FullGC&#xff09;频繁、内存溢出导致TaskManager被Kill…

OpenCV 入门教程: Harris角点检测

OpenCV 入门教程&#xff1a; Harris 角点检测 导语一、Harris角点检测原理二、Harris角点检测步骤三、示例应用总结 导语 Harris 角点检测是图像处理中常用的角点检测算法&#xff0c;用于寻找图像中的角点特征。角点是图像中具有明显边缘变化的位置&#xff0c;具有独特性和不…

踩坑记录:xorm的sql()函数后无法使用FindAndCount()

一、起因 懒省事想用 sql 写个有连表操作的分页查询语句&#xff0c;看到 xorm 中 sql 要和代码紧密纠缠在一起就不爽&#xff0c;所有就想用 xorm 中的 session.SQL(sql).Limit(size, offset).FindAndCount() 方法解决。不曾想。。。 sql: expected 15 destination argument…

【搜索引擎Solr】Solr:提高批量索引的性能

几个月前&#xff0c;我致力于提高“完整”索引器的性能。我觉得这种改进足以分享这个故事。完整索引器是 Box 从头开始创建搜索索引的过程&#xff0c;从 hbase 表中读取我们所有的文档并将文档插入到 Solr 索引中。 我们根据 id 对索引文档进行分片&#xff0c;同样的文档 id…

【springboot】RestTemplate序列化RedisSerializer到底该选哪个

RedisTemplate是Spring Data Redis提供给用户的最高级的抽象客户端&#xff0c;用户可直接通过RedisTemplate对Redis进行多种操作。 在项目中使用需要引入如下依赖&#xff1a; <dependency><groupId>org.springframework.boot</groupId><artifactId>…

IDEA自动添加注释作者版本时间等信息

File | Settings | Editor | Live Templates 点击加号&#xff0c;选择第二项 设置一个名称 再次点击加号&#xff0c;选择第一项 填写名称&#xff08;设置完成后再代码中输入该名称即可插入该注释内容&#xff09;&#xff0c;描述&#xff0c;及内容 /*** author 名字…

机器学习技术(五)——特征工程与模型评估

机器学习技术&#xff08;五&#xff09;——特征工程与模型评估(2️⃣) 文章目录 机器学习技术&#xff08;五&#xff09;——特征工程与模型评估(:two:)二、模型评估1、Accuracy score2、Confusion matrix混淆矩阵1、多值2、二值 3、Hamming loss4、Precision, recall and F…

list分段截取方法

对list 分段截取方法是一个常见的操作&#xff0c;通常用于对list数据批量操作&#xff0c;常见的场景有返回分页展示数据&#xff0c;对大数据进行分批次插入数据库等 package com.hmdp.dto;import org.apache.commons.collections4.ListUtils; import org.springframework.u…