首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在C中高亮显示GTKTreeView行,就像用鼠标选中一样

在C中高亮显示GTKTreeView行,可以通过以下步骤实现:

  1. 首先,确保你已经安装了GTK+库,并且在代码中包含了相应的头文件。
  2. 创建一个GTKTreeView,并将其添加到一个GTKScrolledWindow中,以便可以滚动查看。
  3. 创建一个GTKListStore或GTKTreeStore作为数据模型,并将其与GTKTreeView绑定。
  4. 为GTKTreeView添加一个GTKCellRenderer,用于显示每个单元格的内容。
  5. 通过调用gtk_tree_view_set_model()函数将数据模型设置给GTKTreeView。
  6. 使用gtk_tree_view_append_column()函数添加列到GTKTreeView,并为每个列设置一个GTKCellRenderer。
  7. 为GTKTreeView注册一个信号处理函数,以便在选中行时触发。
  8. 在信号处理函数中,获取选中的行,并使用gtk_tree_selection_get_selected()函数获取选中行的迭代器。
  9. 使用gtk_tree_model_get_path()函数获取选中行的路径。
  10. 使用gtk_tree_view_get_bin_window()函数获取GTKTreeView的窗口。
  11. 使用gtk_tree_view_get_visible_rect()函数获取GTKTreeView的可见区域。
  12. 使用gtk_tree_view_convert_bin_window_to_widget_coords()函数将窗口坐标转换为控件坐标。
  13. 使用gtk_tree_view_get_cell_area()函数获取选中行的单元格区域。
  14. 使用gtk_widget_queue_draw_area()函数在选中行的区域内进行重绘,以实现高亮显示效果。

以下是一个示例代码片段,演示了如何在C中高亮显示GTKTreeView行:

代码语言:txt
复制
#include <gtk/gtk.h>

// 信号处理函数,用于在选中行时触发
void on_row_selected(GtkTreeView *treeview, GtkTreePath *path, GtkTreeViewColumn *column, gpointer userdata)
{
    GtkTreeModel *model;
    GtkTreeIter iter;
    GdkWindow *window;
    GdkRectangle rect;

    // 获取选中行的模型和迭代器
    model = gtk_tree_view_get_model(treeview);
    if (gtk_tree_model_get_iter(model, &iter, path))
    {
        // 获取选中行的窗口
        window = gtk_tree_view_get_bin_window(treeview);

        // 获取选中行的可见区域
        gtk_tree_view_get_visible_rect(treeview, &rect);

        // 将窗口坐标转换为控件坐标
        gtk_tree_view_convert_bin_window_to_widget_coords(treeview, rect.x, rect.y, &rect.x, &rect.y);

        // 获取选中行的单元格区域
        gtk_tree_view_get_cell_area(treeview, path, column, &rect);

        // 在选中行的区域内进行重绘,实现高亮显示效果
        gtk_widget_queue_draw_area(GTK_WIDGET(treeview), rect.x, rect.y, rect.width, rect.height);
    }
}

int main(int argc, char *argv[])
{
    gtk_init(&argc, &argv);

    // 创建GTK窗口
    GtkWidget *window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
    gtk_window_set_default_size(GTK_WINDOW(window), 400, 300);
    g_signal_connect(window, "destroy", G_CALLBACK(gtk_main_quit), NULL);

    // 创建GTKTreeView
    GtkWidget *treeview = gtk_tree_view_new();
    gtk_container_add(GTK_CONTAINER(window), treeview);

    // 创建数据模型
    GtkListStore *store = gtk_list_store_new(1, G_TYPE_STRING);
    GtkTreeIter iter;
    gtk_list_store_append(store, &iter);
    gtk_list_store_set(store, &iter, 0, "Hello, World!", -1);

    // 设置数据模型
    gtk_tree_view_set_model(GTK_TREE_VIEW(treeview), GTK_TREE_MODEL(store));

    // 创建列和单元格渲染器
    GtkTreeViewColumn *column = gtk_tree_view_column_new();
    gtk_tree_view_append_column(GTK_TREE_VIEW(treeview), column);
    GtkCellRenderer *renderer = gtk_cell_renderer_text_new();
    gtk_tree_view_column_pack_start(column, renderer, TRUE);
    gtk_tree_view_column_set_attributes(column, renderer, "text", 0, NULL);

    // 注册信号处理函数
    g_signal_connect(treeview, "row-activated", G_CALLBACK(on_row_selected), NULL);

    gtk_widget_show_all(window);
    gtk_main();

    return 0;
}

这个示例代码创建了一个简单的GTK窗口,其中包含一个带有一行数据的GTKTreeView。当用户选中行时,信号处理函数会在选中行的区域内进行重绘,实现高亮显示效果。

对于GTKTreeView的更多详细信息和使用方法,你可以参考腾讯云的GTKTreeView产品文档:GTKTreeView产品介绍

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • idea快捷键

    ==Ctrl== Ctrl + Y 删除行 ctrl + X 剪切行 Ctrl + N 查找类 Ctrl + R 替换 Ctrl + O 选择可覆盖/继承的方法 Ctrl + F 当前代码(文件)中查找 Ctrl + J 自动代码提示(提示的是自己定义的代码格式) Ctrl + D 复制行或是块(默认是这个意思)(但是我一般习惯改成专门复制行,不包括块,搜索Duplicate Lines) Ctrl + P 方法参数提示显示 Ctrl + W 选中光标所在的单词 ,连续按会有其他效果 (相反的是Ctrl+Shift+W) Ctrl + Q 鼠标放在变量/类名/方法名等上面(也可以在提示补充的时候按),显示文档内容,同类似的功能还有一个Ctrl + Shift + I Ctrl + B 快速打开光标处的类或方法(对于前端支持很好,比如可以直接通过class的name定位到css的文件位置)(等同于ctrl+光标指向) Ctrl + E 最近打开的文件 Ctrl + U 前往父类的方法/父类 Ctrl + K VCS提交项目 Ctrl + T VCS更新项目 Ctrl + G 跳到指定行 Ctrl + H 显示类层次图 Ctrl + F1 显示错误 Ctrl + F3 调转到所选中的词的下一个同名位置 Ctrl + F9 编译 Ctrl - F12 当前编辑的文件中快速导航(可以直接键入字母,IntelliJ IDEA会筛选你输入的来匹配对应是否有的方法,来快速定位)(类似结构图) Ctrl + F11 弹出一个小框来指定式添加书签(可以对文件或文件夹起作用) Ctrl + Tab 编辑窗口切换 (如果在切换的过程又加按上delete,则是关闭对应选中的窗口) Ctrl + delete 删除光标后面的单词 Ctrl + home/end 跳到文件头文件尾 Ctrl + BackSpace 删除光标前面的单词 Ctrl + [ 或 ] 移动光标到块的初/末括号地方 Ctrl + / 或 Ctrl+Shift+/ 注释(// 或者/.../ ) Ctrl + 1,2,3,4.... 快速定位到书签代码处(必须先Ctrl+Shift+1,2,3,4...添加书签) Ctrl + 空格 代码补全提示(因为windows默认被输入法给占用了,可以自己更改下) Ctrl + 小键盘+/- 折叠/展开代码 Ctrl + 鼠标单击编辑窗口的文件标题 弹出该文件路径,可以通过这个打开文件所在地方(相当于Ctrl+alt+F12) Ctrl + 方向左/右 光标跳到上/下个单词 Ctrl + 方向上/下 相当于你用鼠标滑滚轮(为了方便鼠标党) ================================================== ==Alt== Alt + 1 打开/关闭project选项卡 Alt + 这个键是Tab上面那个,按下之后,如果项目有版本控制,则显示常用的版本控制命令 Alt + A 在SVN中把新创建的文件加入进来(自己添加,在Subversion类别) Alt + Q 查看方法的声明(在左上角出现一个Tip层提示),你无需滚动上去查看 Alt + F1 弹出文件选择目标,这个很好用的 Alt + F2 多个浏览器预览 Alt + F3 选中文本,逐个往下查找相同文本,并高亮显示。 Alt + F7 查看该方法/变量/类被调用的地方 Alt + F8 在debug的状态下,选中某些变量或是对象,按此快捷键弹出可输入变量、方法的调试框,指定查看该内容的debug情况 Alt + Home 跳到文件导航bar Alt + Insert 生成代码(如get,set方法,构造函数等) Alt + 方向键 左 或 方向键 右 切换当前打开的代码文件视图 Alt + 方向键 上 或 方向键 下 在方法间快速移动定位 Alt + 鼠标左键单击不放,拖动 可以直接方块区域选择(很有用) Alt + 回车 快速修复(可以用来导入单个包) ================================================== ==Shift== Shift + F6 重构:重新命名 Shift + F11 查看书签 Shift + F10 Run(运行)当前程序,相当于点击run按钮 Shift + F9 debug当前程序,相当于点击debug按钮 Shift + end 选中从光标到end处 Shift + home 选中从光标到home处 Shift + Enter 光标所在行下空出一行,光标跳下 Shift + 单击 可以关闭文件 Shift + 滚轮 横向滚动轴滚动(非常强大)

    05

    android studio快捷键集合[通俗易懂]

    \item Ctrl+P 查看变量参数信息,也就是看变量是哪种类型 \item Ctrl+B 查找该变量的定义位置。 \item Ctrl+Q 查找快速文档,即在另外一个窗口中打开其声明 \item Alt+Shift+C 查看工程最近更改的地方 \item Ctrl+space 自动完成代码 \item Ctrl+shift+Enter 自动填充表达式如if,while,for,switch等 \item Ctrl+shift+向上箭头 把选择的代码往上移 \item Ctrl+shift+向下箭头 把选择的代码往下移 \item Alt+shift+F10 表示自动运行 \item Alt+数字 表示打开或隐藏对应的窗口 \item Ctrl+Click 表示这个对象或类的定义 \item 关闭除当前文件外的所有文件的方法 右击–>关闭其它,或按住alt+click \item Ctrl+D double所选的那一行 \item Ctrl+F 查找 \item Ctrl+R 替换 \item Ctrl+N 打开你想要的类(用于类的切换) \item Ctrl+F12 浏览当前类的成员函数与成员变量 \item Ctrl+H 浏览当前类的继承关系 \item Ctrl+O 浏览当前类的父类的所有成员函数与成员变量 \item Ctrl+Insert 用于快速生成getter与setter方法 \item Ctrl+W 选择上下附近的代码块 \item Ctrl+/ 代码行注释 \item Ctrl+shift+/ 代码块注释 \item Shift+F1 进行浏览器查看相应的类 \item Ctrl+shift+space 自动生成,如String s = (在括号内按快捷键会生成)kks,\textbf{ String s = (String) kks} \item Ctrl+P 显示该\textbf{方法}可用的参数列表 \item Ctrl+shift+backspace 返回上一次编辑的地方 \item Ctrl+E 显示最近找开的文件 \item F2 文件中错误一处处定位,按一次就跳到下一处错误 \item Alt+向上箭头 当前光标处移到上一方法的开始处 \item Alt+向下箭头 当前光标处移到下一方法的开始处 \item Ctrl+shift+J 合并相邻两行代码去除多余的空格

    02

    IDEA-常用快捷键列表

    Ctrl+Shift + Enter,语句完成 “!”,否定完成,输入表达式时按 “!”键 Ctrl+E,最近的文件 Ctrl+Shift+E,最近更改的文件 Shift+Click,可以关闭文件 Ctrl+[ OR ],可以跑到大括号的开头与结尾 Ctrl+F12,可以显示当前文件的结构 Ctrl+F7,可以查询当前元素在当前文件中的引用,然后按 F3 可以选择 Ctrl+N,可以快速打开类 Ctrl+Shift+N,可以快速打开文件 Alt+Q,可以看到当前方法的声明 Ctrl+P,可以显示参数信息 Ctrl+Shift+Insert,可以选择剪贴板内容并插入 Alt+Insert,可以生成构造器/Getter/Setter等 Ctrl+Alt+V,可以引入变量。例如:new String(); 自动导入变量定义 Ctrl+Alt+T,可以把代码包在一个块内,例如:try/catch Ctrl+Enter,导入包,自动修正 Ctrl+Alt+L,格式化代码 Ctrl+Alt+I,将选中的代码进行自动缩进编排,这个功能在编辑 JSP 文件时也可以工作 Ctrl+Alt+O,优化导入的类和包 Ctrl+R,替换文本 Ctrl+F,查找文本 Ctrl+Shift+Space,自动补全代码 Ctrl+空格,代码提示(与系统输入法快捷键冲突) Ctrl+Shift+Alt+N,查找类中的方法或变量 Alt+Shift+C,最近的更改 Alt+Shift+Up/Down,上/下移一行 Shift+F6,重构 – 重命名 Ctrl+X,删除行 Ctrl+D,复制行 Ctrl+/或Ctrl+Shift+/,注释(//或者/**/) Ctrl+J,自动代码(例如:serr) Ctrl+Alt+J,用动态模板环绕 Ctrl+H,显示类结构图(类的继承层次) Ctrl+Q,显示注释文档 Alt+F1,查找代码所在位置 Alt+1,快速打开或隐藏工程面板 Ctrl+Alt+left/right,返回至上次浏览的位置 Alt+left/right,切换代码视图 Alt+Up/Down,在方法间快速移动定位 Ctrl+Shift+Up/Down,向上/下移动语句 F2 或 Shift+F2,高亮错误或警告快速定位 Tab,代码标签输入完成后,按 Tab,生成代码 Ctrl+Shift+F7,高亮显示所有该文本,按 Esc 高亮消失 Alt+F3,逐个往下查找相同文本,并高亮显示 Ctrl+Up/Down,光标中转到第一行或最后一行下 Ctrl+B/Ctrl+Click,快速打开光标处的类或方法(跳转到定义处) Ctrl+Alt+B,跳转到方法实现处 Ctrl+Shift+Backspace,跳转到上次编辑的地方 Ctrl+O,重写方法 Ctrl+Alt+Space,类名自动完成 Ctrl+Alt+Up/Down,快速跳转搜索结果 Ctrl+Shift+J,整合两行 Alt+F8,计算变量值 Ctrl+Shift+V,可以将最近使用的剪贴板内容选择插入到文本 Ctrl+Alt+Shift+V,简单粘贴 Shift+Esc,不仅可以把焦点移到编辑器上,而且还可以隐藏当前(或最后活动的)工具窗口 F12,把焦点从编辑器移到最近使用的工具窗口 Shift+F1,要打开编辑器光标字符处使用的类或者方法 Java 文档的浏览器 Ctrl+W,可以选择单词继而语句继而行继而函数 Ctrl+Shift+W,取消选择光标所在词 Alt+F7,查找整个工程中使用地某一个类、方法或者变量的位置 Ctrl+I,实现方法 Ctrl+Shift+U,大小写转化 Ctrl+Y,删除当前行 Shift+Enter,向下插入新行 psvm/sout,main/System.out.println(); Ctrl+J,查看更多 Ctrl+Shift+F,全局查找 Ctrl+F,查找/Shift+F3,向上查找/F3,向下查找 Ctrl+Shift+S,高级搜索 Ctrl+U,转到父类 Ctrl+Alt+S,打开设置对话框 Alt+Shift+Inert,开启/关闭列选择模式 Ctrl+Alt+Shift+S,打开当前项目/模块属性 Ctrl+G,定位行 Alt+Home,跳转到导航栏 Ctrl+Enter,上插一行 Ctrl+Backspace,按单词删除 Ctrl+”+/-”,当前方法展开、折叠 Ctrl+Shift+”+/-”,全部展开、折叠 【调试部分、编译】 Ctrl+F2,停止 Alt+Shift+F9,选择 Debug Alt+Shift+F10,选择 Run Ctrl+Shift+F9,编译 Ctrl+Shift+F10,运行 Ctrl+Shift+F8,查看断点 F8,步过 F7,步入 Shift+F7,智能步入 Shift+F8,步出 Alt+Shift+F8

    02

    IntelliJ Idea 常用快捷键列表

    Ctrl+Shift + Enter,语句完成 “!”,否定完成,输入表达式时按 “!”键 Ctrl+E,最近的文件 Ctrl+Shift+E,最近更改的文件 Shift+Click,可以关闭文件 Ctrl+[ OR ],可以跑到大括号的开头与结尾 Ctrl+F12,可以显示当前文件的结构 Ctrl+F7,可以查询当前元素在当前文件中的引用,然后按 F3 可以选择 Ctrl+N,可以快速打开类 Ctrl+Shift+N,可以快速打开文件 Alt+Q,可以看到当前方法的声明 Ctrl+P,可以显示参数信息 Ctrl+Shift+Insert,可以选择剪贴板内容并插入 Alt+Insert,可以生成构造器/Getter/Setter等 Ctrl+Alt+V,可以引入变量。例如:new String(); 自动导入变量定义 Ctrl+Alt+T,可以把代码包在一个块内,例如:try/catch Ctrl+Enter,导入包,自动修正 Ctrl+Alt+L,格式化代码 Ctrl+Alt+I,将选中的代码进行自动缩进编排,这个功能在编辑 JSP 文件时也可以工作 Ctrl+Alt+O,优化导入的类和包 Ctrl+R,替换文本 Ctrl+F,查找文本 Ctrl+Shift+Space,自动补全代码 Ctrl+空格,代码提示(与系统输入法快捷键冲突) Ctrl+Shift+Alt+N,查找类中的方法或变量 Alt+Shift+C,最近的更改 Alt+Shift+Up/Down,上/下移一行 Shift+F6,重构 – 重命名 Ctrl+X,删除行 Ctrl+D,复制行 Ctrl+/或Ctrl+Shift+/,注释(//或者/**/) Ctrl+J,自动代码(例如:serr) Ctrl+Alt+J,用动态模板环绕 Ctrl+H,显示类结构图(类的继承层次) Ctrl+Q,显示注释文档 Alt+F1,查找代码所在位置 Alt+1,快速打开或隐藏工程面板 Ctrl+Alt+left/right,返回至上次浏览的位置 Alt+left/right,切换代码视图 Alt+Up/Down,在方法间快速移动定位 Ctrl+Shift+Up/Down,向上/下移动语句 F2 或 Shift+F2,高亮错误或警告快速定位 Tab,代码标签输入完成后,按 Tab,生成代码 Ctrl+Shift+F7,高亮显示所有该文本,按 Esc 高亮消失 Alt+F3,逐个往下查找相同文本,并高亮显示 Ctrl+Up/Down,光标中转到第一行或最后一行下 Ctrl+B/Ctrl+Click,快速打开光标处的类或方法(跳转到定义处) Ctrl+Alt+B,跳转到方法实现处 Ctrl+Shift+Backspace,跳转到上次编辑的地方 Ctrl+O,重写方法 Ctrl+Alt+Space,类名自动完成 Ctrl+Alt+Up/Down,快速跳转搜索结果 Ctrl+Shift+J,整合两行 Alt+F8,计算变量值 Ctrl+Shift+V,可以将最近使用的剪贴板内容选择插入到文本 Ctrl+Alt+Shift+V,简单粘贴 Shift+Esc,不仅可以把焦点移到编辑器上,而且还可以隐藏当前(或最后活动的)工具窗口 F12,把焦点从编辑器移到最近使用的工具窗口 Shift+F1,要打开编辑器光标字符处使用的类或者方法 Java 文档的浏览器 Ctrl+W,可以选择单词继而语句继而行继而函数 Ctrl+Shift+W,取消选择光标所在词 Alt+F7,查找整个工程中使用地某一个类、方法或者变量的位置 Ctrl+I,实现方法 Ctrl+Shift+U,大小写转化 Ctrl+Y,删除当前行

    02

    intellij idea常用快捷键

    Ctrl 快捷键 介绍 Ctrl + F 在当前文件进行文本查找 (必备) Ctrl + R 在当前文件进行文本替换 (必备) Ctrl + Z 撤销 (必备) Ctrl + Y 删除光标所在行 或 删除选中的行 (必备) Ctrl + X 剪切光标所在行 或 剪切选择内容 Ctrl + C 复制光标所在行 或 复制选择内容 Ctrl + D 复制光标所在行 或 复制选择内容,并把复制内容插入光标位置下面 (必备) Ctrl + W 递进式选择代码块。可选中光标所在的单词或段落,连续按会在原有选中的基础上再扩展选中范围 (必备) Ctrl + E 显示最近打开的文件记录列表 (必备) Ctrl + N 根据输入的 类名 查找类文件 (必备) Ctrl + G 在当前文件跳转到指定行处 Ctrl + J 插入自定义动态代码模板 (必备) Ctrl + P 方法参数提示显示 (必备) Ctrl + Q 光标所在的变量 / 类名 / 方法名等上面(也可以在提示补充的时候按),显示文档内容 Ctrl + U 前往当前光标所在的方法的父类的方法 / 接口定义 (必备) Ctrl + B 进入光标所在的方法/变量的接口或是定义处,等效于 Ctrl + 左键单击 (必备) Ctrl + K 版本控制提交项目,需要此项目有加入到版本控制才可用 Ctrl + T 版本控制更新项目,需要此项目有加入到版本控制才可用 Ctrl + H 显示当前类的层次结构 Ctrl + O 选择可重写的方法 Ctrl + I 选择可继承的方法 Ctrl + + 展开代码 Ctrl + - 折叠代码 Ctrl + / 注释光标所在行代码,会根据当前不同文件类型使用不同的注释符号 (必备) Ctrl + [ 移动光标到当前所在代码的花括号开始位置 Ctrl + ] 移动光标到当前所在代码的花括号结束位置 Ctrl + F1 在光标所在的错误代码处显示错误信息 (必备) Ctrl + F3 调转到所选中的词的下一个引用位置 (必备) Ctrl + F4 关闭当前编辑文件 Ctrl + F8 在 Debug 模式下,设置光标当前行为断点,如果当前已经是断点则去掉断点 Ctrl + F9 执行 Make Project 操作 Ctrl + F11 选中文件 / 文件夹,使用助记符设定 / 取消书签 (必备) Ctrl + F12 弹出当前文件结构层,可以在弹出的层上直接输入,进行筛选 Ctrl + Tab 编辑窗口切换,如果在切换的过程又加按上delete,则是关闭对应选中的窗口 Ctrl + End 跳到文件尾 Ctrl + Home 跳到文件头 Ctrl + Space 基础代码补全,默认在 Windows 系统上被输入法占用,需要进行修改,建议修改为 Ctrl + 逗号 (必备) Ctrl + Delete 删除光标后面的单词或是中文句 (必备) Ctrl + BackSpace 删除光标前面的单词或是中文句 (必备) Ctrl + 1,2,3…9 定位到对应数值的书签位置 (必备) Ctrl + 左键单击 在打开的文件标题上,弹出该文件路径 (必备) Ctrl + 光标定位 按 Ctrl 不要松开,会显示光标所在的类信息摘要 Ctrl + 左方向键 光标跳转到当前单词 / 中文句的左侧开头位置 (必备) Ctrl + 右方向键 光标跳转到当前单词 / 中文句的右侧开头位置 (必备) Ctrl + 前方向键 等效于鼠标滚轮向前效果 (必备) Ctrl + 后方向键 等效于鼠标滚轮向后效果 (必备) Alt 快捷键 介绍 Alt + `|显示版本控制常用操作菜单弹出层 (必备) Alt + Q 弹出一个提示,显示当前类的声明 / 上下文信息 Alt + F1 显示当前文件选择目标弹出层,弹出层中有很多目标可以进行选择 (必备) Alt + F2 对于前面页面,显示各类浏览器打开目标选择弹出层 Alt + F3 选中文本,逐个往下查找相同文本,并高亮显示 Alt + F7 查找光标所在的方法 / 变量 / 类被调用的地方 Alt + F8 在 Debug 的状态下,选中对象,弹出可输入计算表达式调试框,查看该输入内容的调试结果 Alt + Home 定位 / 显示到当前文件的 Navigation Bar Alt + Enter IntelliJ IDEA 根据光标所在问题,提供快速修复选择,光标放在的位置不同提示的结果也不同 (必备) Alt + Insert 代码自动生成,如生成对象的 set / get 方法,构造函数,toString() 等 (必备) Alt + 左方向键 切换当前已打开的窗口中的子视图,比如Debug窗口中有Output

    02
    领券