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