GtkLabel是少数的几个不创建自己的窗口的GTK+控件之一.相反,它直接的将自己画在父控件上.这就是说:如果你想为GtkLabel控件设置背景,你需要改变它的父控件的的背景.

这是GTK+ FAQ 中"6.10. 如何给GtkLabel控件设置背景颜色?"给出的解释。一般情况下设置某个GtkWidget的背景都用一般情况下用函数 gtk_widget_modify_bg()。注意在gtk_widget_modify_bg()函数的说明里有一段话:

Note that "no window" widgets (which have the GTK_NO_WINDOW flag set) draw on their parent container's window and thus may not draw any background themselves. This is the case for e.g. GtkLabel. To modify the background of such widgets, you have to set the background color on their parent; if you want to set the background of a rectangular area around a label, try placing the label in a GtkEventBox widget and setting the background color on that.

其实这已经告诉了我们如何设置“无窗口”widgets背景颜色的方法:将GtkLabel包含在GtkEventBox里,然后用函数gtk_widget_modify_bg()设置GtkEventBox的背景。

设置GtkLabel的字体颜色用gtk_widget_set_markup()函数,该函数的第二个参数是一个markup string,详见Pango reference manual里PangoMarkupFormat的Pango Text Attribute Markup Language。以下为代码实现,仅供参考:

#include

gchar * _(gchar *string);

int main(int argc, char *argv[])

{

GtkWidget *window, *event_box, *label;

GdkColor color;

gtk_init(&argc, &argv);

window = gtk_window_new(GTK_WINDOW_TOPLEVEL);

gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);

gtk_container_set_border_width(GTK_CONTAINER(window), 10);

g_signal_connect(G_OBJECT(window), "destroy",

G_CALLBACK(gtk_main_quit), NULL);

event_box = gtk_event_box_new();

gtk_container_add(GTK_CONTAINER(window), event_box);

color.red = 0xffff;

color.green = 0xffff;

color.blue = 0xffff;

/* 设置GtkEventBox的背景颜色为白色 */

gtk_widget_modify_bg(event_box,GTK_STATE_NORMAL, &color);

label = gtk_label_new(NULL);

/* 设置GtkLabel的字体颜色为红色 */

gtk_label_set_markup(GTK_LABEL(label), \

_("GtkLabel白色背景红色字体"));

gtk_widget_set_size_request(label, 300, 200);

/* GtkEventBox为包含GtkLabel的父window */

gtk_container_add(GTK_CONTAINER(event_box), label);

gtk_widget_show_all(window);

gtk_main();

return 0;

}

/* 支持中文显示 */

gchar *

_(gchar *string)

{

return(g_locale_to_utf8(string, -1, NULL, NULL, NULL));

}

显示效果如下:

这里再转载一下GTKSCORLLEDWINDOW背景修改的方法:

直接通过下面的方式是无法改变GtkScrolledWindow背景色的:

1. GdkColor white;

2. gdk_color_parse ("WHITE", &white);

3. gtk_widget_modify_bg (scrolledWindow, GTK_STATE_NORMAL, &white);

必须连GTKVIEWPORT的背景也同时改变:

1. const char scroll_style[] =

2. "style \"view-scroll\" {"

3. " bg[NORMAL] = \"#FFFFFF\""

4. "}"

5. "class \"GtkViewport\" style \"view-scroll\""

6. "class \"GtkScrolledWindow\" style \"view-scroll\"";

7. gtk_rc_parse_string (scroll_style);

linux中gtk下定义label颜色,设置GtkLabel的背景颜色和字体颜色相关推荐

  1. linux中etc下的hosts(本地IP解析)文件详解

    linux中etc下的hosts(本地IP解析)文件详解 1./etc/hosts(本地解析) 很多人一提到更改hostname首先就想到修改/etc/hosts文件, 认为hostname的配置文件 ...

  2. 微信小程序中这么简单的设置页面背景图及字体颜色的方法,你还不会?

    在微信小程序中,我们不免的要设置背景图片和字体颜色. 那怎么样才能做到简单的设置背景图片和字体颜色呢? 话不多说,直接开讲 首先先说怎么设置页面背景图片: 这是博主准备的照片. 下面是在wxml中的代 ...

  3. linux设置周期性计划任务,Linux中计划任务、周期性任务设置

    Linux中计划任务.周期性任务设置 计划任务:指在未来的特定时间里,执行一次某一特定任务.当然,如果同一任务需要在不同时间点执行执行两次.三次或多次,可以视为多个一次看待. 周期性任务:指某一任务需 ...

  4. 点击input,区域选中后外面会出现其他颜色边框去除方式和更改input字体颜色

    点击input,区域选中后外面会出现其他颜色边框去除方式和更改input字体颜色 {border:0;outline:none;} //去除边框 定义和用法 outline (轮廓)是绘制于元素周围的 ...

  5. Linux中THIS_MODULE宏定义详解

    一直都在耿耿于怀,这个THIS_MODULE到底是个什么玩意,linux内核中无处不在的东西.今天上网搜了一下,算是基本明白了.网上牛人写的已经比较详细,另外目前暂时没有时间往更深层次分析,所以直接贴 ...

  6. Linux 中 Iptables 规则定义

    linux 远程服务访问控制 Firewall: 防火墙  防火墙工作位置 :网络边缘出口处,主机边缘 数据包进出口 工作于网络边缘的一套组建  按照管理员定义的规则 对于进出本网段的报文进行检查 规 ...

  7. linux machine start,Linux中的MACH定义之MACHINE_START / MACHINE_END

    (写在转载之前) 在linux中machine对应一个设备,对于开发者而言对应一个新的项目,项目开展的初始需要对应定义一个MACH,在arch/arm/mach-xxx/目录下,此文件中定义了GPIO ...

  8. Linux中etc下shadow文件详解

    Linux中/etc/shadow文件详解 [root@gaki0 ~]# tail -1 /etc/shadow gaki:$6$boB/e/30SJD5GcLh$RR9IlXwNkvUBiRYWu ...

  9. linux中/usr下文件权限修改setuid导致的问题

    2019独角兽企业重金招聘Python工程师标准>>> 在Ubuntu系统中因为一些原因我使用如下命令修改了/usr目录的拥有者权限: chown -R root:root /usr ...

最新文章

  1. 关于《写给青少年的数学故事:代数奇思》“二维码”一文的声明
  2. git 配置组合指令_Git命令行基本操作
  3. Redis中bitmap的妙用 1
  4. 用master-worker模型比对团队管理
  5. C++ R“()“ 源码转译
  6. 通过spark-submit,本地测试SparkStreaming
  7. HDU - 3804 Query on a tree(树链剖分+线段树+离线处理)
  8. 【论文阅读】A Gentle Introduction to Graph Neural Networks [图神经网络入门](6)
  9. 查看socket缓冲区数据_什么是socket缓冲区?
  10. python 鸭子类型_Python中的鸭子输入是什么?
  11. ffmpeg2.8将多媒体文件保存为ppm
  12. [转载] 【python】str与json类型转换
  13. C/C++[PAT B1009]说反话
  14. 素数猜想对 c语言,1007 素数对猜想 (20 分)(C语言实现)
  15. 加密的m3u8、ts文件合并
  16. 给Edge添加chrome主题
  17. safari查看html代码,iPhone不越狱safari查看网页源代码方法
  18. Eureka Server报错:Retry limit reached; giving up on complet the request
  19. 【值得收藏】如此心机的老婆,不难教出一个优秀的女儿。谁娶了都是福。
  20. iOS10访问通讯录、相册等隐私权限设置

热门文章

  1. python中main函数在运行中不是必须要写的_Python必备知识之“if __name__ == '__main__':”...
  2. 字符串转换为列表 python_python,_python把字符串转换成列表,python - phpStudy
  3. oracle数据库实践,RubyonRails连接Oracle数据库实践
  4. java固定资产管理系统_基于jsp的固定资产管理系统-JavaEE实现固定资产管理系统 - java项目源码...
  5. python中exit 的作用_Python退出命令-为什么要使用这么多?何时使用每个命令?
  6. SpringBoot2.0使用Spring WebFlux之HelloWord篇
  7. 安装提示没有安装包docker(转载)
  8. Linux 下 Shell 命令的分类及用法
  9. Linux下Birt、JTreeChart中文乱码问题解决办法
  10. 关于XP下OpenGL的配置