gtk中样式设置gtk_widget_modify

本文介绍了如何使用GTK+库中的函数来修改GUI组件的颜色、字体等属性,并对比了不同版本GTK+之间的差异。同时,提供了颜色选择器的实际应用案例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

void        gtk_widget_modify_fg          (GtkWidget            *widget,
					   GtkStateType          state,
					   const GdkColor       *color);
void        gtk_widget_modify_bg          (GtkWidget            *widget,
					   GtkStateType          state,
					   const GdkColor       *color);
void        gtk_widget_modify_text        (GtkWidget            *widget,
					   GtkStateType          state,
					   const GdkColor       *color);
void        gtk_widget_modify_base        (GtkWidget            *widget,
					   GtkStateType          state,
					   const GdkColor       *color);
void        gtk_widget_modify_cursor      (GtkWidget            *widget,
					   const GdkColor       *primary,
					   const GdkColor       *secondary);
void        gtk_widget_modify_font        (GtkWidget            *widget,
					   PangoFontDescription *font_desc);



gtk+2.x中有这样的函数,你一看便可以看出来作用,例如更改textview中字体及字体颜色等,在GTK程序中获取RGB颜色最直观的方法是用gdk_color_parse(  const char* RGB_name, GdkColor  *pcolor)函数,返回值是GDK color.这里有颜色值,可以参考一下

这里说一下gtk_widget_modify_base和gtk_widget_modify_bg的区别。

gtk_widget_modify_base是可以设置不是窗体的颜色,比如textview这样的不是窗体的,gtk_widget_modify_bg只能设置窗体的背景颜色,如window。而按钮,entry等不能用gtk_widget_modify_bg。下图:

效果不一样的。

在gtk+3.x中函数有所改变

oid 	gtk_widget_override_background_color ()
void 	gtk_widget_override_color ()
void 	gtk_widget_override_font ()
void 	gtk_widget_override_symbolic_color ()
void 	gtk_widget_override_cursor ()
glade3中有颜色选择器(color selection),可以利用它更直观的选择颜色,过程大致是这样的:

void     gtk_color_selection_get_current_color   (GtkColorSelection *colorsel,  GdkColor  *color);

这个函数获取当前颜色,就是颜色版中的颜色。

颜色选择器(color selection)有个信号color-changed,只要选中的颜色改变就会触发这个信号,

g_signal_connect(colorselection, "color-changed", G_CALLBACK(bgcolor), NULL);

自己写个回调函数bgcolor。

下面是我做的一个文本编辑器如图:可以改变字体和背景颜色,源码在https://github.com/liuhuanone

转载于:https://my.oschina.net/liuxinquan/blog/480933

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值