Gtk3 css应用课程不工作?

时间:2014-12-15 11:36:50

标签: css gtk gtk3

解释和我做了什么:

我的应用程序中有这个结构:

GtkWindow
   GtkOverlay
      GtkBox
         GtkGrid
            GtkButton

当我尝试应用此功能时:

    GtkButton{
     background-color:blue;
}

按钮具有从.button

应用的默认样式

我试过

GtkWindow GtkOverlay GtkBox GtkGrid GtkButton
{
background-color:blue;
}

它也不起作用

我尝试使用!重要但我猜Gtk引擎并不支持它。

问:有没有办法强制某些小部件上课或给它一个更高的优先级?

感谢提前

1 个答案:

答案 0 :(得分:0)

要更改一个小部件的属性,只需使用CSS Selector #id。

例如(我使用GLADE构建UI,所以不确定如何在代码中执行),我在我的about选项卡上有一个按钮,我为此测试更改了,我给了它更新的#id(小部件名称)在glade中)和我的css看起来像这样(因为你没有指定语言,以下是在Linux上使用NASM的64位程序集):

szAboutCSS              db 'GtkEventBox#abouttab{'
                        db 'background-color: black;'
                        db 'color: white;'
                        db 'font: bold;}'

                        db 'GtkButton#update{'
                        db 'font: normal;'
                        db 'color: red;'
                        db 'background: blue;}'

                        db 'GtkLabel#version{'
                        db 'color: #FF0000;'
                        db 'font-size: 10px}', 0

当我从UI文件中获取所需的所有对象时,在我调用gtk_widget_show_all之前,我调用此函数将css应用于我的about选项卡:

SetAboutColor:
    sub     rsp, 8 

%define _Provider   [rsp]

    call    gtk_css_provider_new
    mov     _Provider, rax

    call    gdk_display_get_default

    mov     rdi, rax
    call    gdk_display_get_default_screen

    mov     rdx, GTK_STYLE_PROVIDER_PRIORITY_APPLICATION
    mov     rsi, _Provider
    mov     rdi, rax
    call    gtk_style_context_add_provider_for_screen

    mov     rcx, NULL
    mov     rdx, -1
    mov     rsi, szAboutCSS
    mov     rdi, _Provider
    call    gtk_css_provider_load_from_data

    mov     rdi, _Provider
    call    g_object_unref

    add     rsp, 8
    ret

结果: enter image description here