解释和我的尝试:
我的应用程序中有这个结构:
GtkWindow
GtkOverlay
GtkBox
GtkGrid
GtkButton
当我尝试应用它时:
GtkButton{
background-color:blue;
}
按钮具有从 .button
类应用的默认样式
我试过了
GtkWindow GtkOverlay GtkBox GtkGrid GtkButton
{
background-color:blue;
}
还是不行
我尝试使用 !important 但我猜 Gtk 引擎不支持它。
问:有什么方法可以强制某些小部件上类或赋予它更高的优先级?
谢谢提前
最佳答案
要更改一个小部件的属性,只需使用 CSS 选择器#id。
例如(我使用 GLADE 构建 UI,所以不确定如何在代码中执行),我在我的关于选项卡上有一个按钮,我为这个测试更改了它,我给它更新的#id(小部件名称在林间空地)和我的 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 应用到我的“关于”选项卡:
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
结果:
关于css - Gtk3 css 应用类不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27483163/