Howto change GtkScrolledWindow background color

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

                GdkColor white;
                gdk_color_parse ("WHITE", &white);
                gtk_widget_modify_bg (scrolledWindow, GTK_STATE_NORMAL, &white);
 

 

 

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

        const char scroll_style[] =
        "style \"view-scroll\" {"
        "  bg[NORMAL] = \"#FFFFFF\""
        "}"
        "class \"GtkViewport\" style \"view-scroll\""
        "class \"GtkScrolledWindow\" style \"view-scroll\"";
        gtk_rc_parse_string (scroll_style);
 

另外,在style数组里的关键字“class”可以替换成“widget_class”,其意义为:

资源文件定义了一系列风格, 并通过三种匹配规则方式将这些风格应用到匹配的widget上,
每种规则都支持文件通配符(wildcards)'?'和'*':
* widget: 通过widget path来找到匹配的widget. widget path 是一个"."分
割的字符串, 按照从最外层到最里层的顺序,依此指定了widget的parent和该
widget本身的name, 而这些name是通过gtk_widget_set_name()来设置的. 如
果某个widget或者其parent没有设置name, 则用class name.
例如:
(1)widget "mywindow.vbox1.entry0" style "style0": 对mywindow下的
     vbox1中的entry0,设置其style为style0

(2)widget "mywindow.*.entry1" style "style1": 对mywindow下所有
     widget下的名为entry1的widget, 设置其style为style1

(3)widget "mywindow.GtkHBox.entry2" style "style2": 对mywindow下
     所有类型为GtkHBox的widget下的名为entry2的widget, 设置其style为style2

(4)widget "mywindow.Gtk?Box.GtkEntry" style "style3": 对mywindow下
     所有类型为GtkHBox或者GtkVBox的widget下的所有类型为GtkEntry的widget,
设置其style为style3

* widget_class: 通过class path来找到匹配的widget. class path与
widget path类似, 都是用"."来分割字符串, 但是每个字符串都是widget的parent
的class name. 例如:
(1)widget_class "GtkWindow.GtkHBox.GtkEntry" style "style1"
(2)widget_class "GtkWindow.Gtk*Box.Gtk?Box.GtkLabel" style "style2"
(3)widget_class "GtkWindow.*.GtkLabel" style "style3"

* class: 通过继承关系来找到匹配的widget.
例如: class "GtkButton" style "my-style" 指定了所有的GtkButton, 包括
GtkToggleButton和GtkCheckButton都要用到my-style风格.

你可能感兴趣的:(background)