GTK+3.0 - 树视图/滚动窗口上的滚动条 - 用于控制滚动条的 CSS 属性



在 GTK+3.0 (3.22.30( 上开发,在 X11 上打开box,在 Ubuntu 18.04 服务器上。

我一直在努力找出CSS模型来控制GtkTreeView ScrolledWindow上滚动条的外观。 我的成功非常有限。 我唯一能够控制的就是单击/移动滑块时滑块的颜色和槽的背景颜色。 其他属性似乎没有任何影响。 我发现槽的颜色属性不受支持,似乎会导致解析错误。

该应用程序使用触摸屏,因此我需要滚动条始终出现,而不仅仅是当光标指针悬停在控件上时。 触摸应用程序中没有光标指针。

我已经在下面尝试了这些CSS定义。其中一些只是实验性的,试图让一些东西起作用。 我尝试移动宽度、最小宽度和"has-xx-stepper",但它们似乎没有任何效果。 我仍然坚持使用相同的简单默认滑块,但有一些基本的颜色控制。 我无法解释如何引用滚动条的 CSS 节点模型,因为我找不到示例。

scrollbar {
has-backwards-stepper: true;
has-forward-stepper: true;
has-secondary-backward-stepper: true;
has-secondary-forward-stepper: true;
min-width: 80;
}
trough {
background-color: #00ee00;
}
slider {
color: #00FF00;
slider-width: 80;
min-width: 80;
has-backwards-stepper: true;
has-forward-stepper: true;
}

使用 GTK+ 检查器(允许对 Gtk 应用程序的 CSS 属性进行一些检查(,我找不到 GTK3 GtkScrollbar 文档中引用的"has-backs-stepper"和其他属性。 这是测试 CSS 语法的方便地方,但我无法弄清楚如何根据需要控制外观。

我应该使用什么语法来获取步进按钮,固定宽度并使其始终显示? 指向解释这一点的文档的指针会很有帮助。我已经详尽地浏览了GTK 3 CSS概述,这在这里没有帮助。

我能够确定has-xxxx-stepper属性似乎是只读的,但实际上并没有连接到我可以更改的任何内容。

我能够让滚动条出现在滚动窗口的右侧,并带有"覆盖滚动"属性。

sw = gtk_scrolled_window_new(NULL, NULL);
gtk_container_set_border_width( GTK_CONTAINER(sw), 0 );
gtk_scrolled_window_set_policy( GTK_SCROLLED_WINDOW(sw), TK_POLICY_NEVER, GTK_POLICY_ALWAYS ); //scroll bars
//Set scrollbar to ALWAYS be displayed and not as temporary overlay
g_object_set( sw , "overlay-scrolling", FALSE , NULL);

我能够通过以下方式进一步控制滚动条槽的宽度:

GtkWidget * ptrVscrollBar = gtk_scrolled_window_get_vscrollbar ( TK_SCROLLED_WINDOW(sw) );    
g_object_set( ptrVscrollBar ,
"width-request", 30 ,
"margin-bottom", 30 ,
"margin-top", 30 ,
NULL);

更新:我发现滑块的CSS语法略有不同。 通过一些实验,我能够覆盖滑块组件的宽度和高度。 这些属性值需要px单位,没有它们,它们将被忽略。

slider {
min-width: 28px;
min-height: 80px;
}

我还没有弄清楚如何使步进按钮出现。现在必须使用 GTK3 手动/单独创建这些吗? 我有一些使用滚动窗口的vadjustment对象属性的原型代码,但是为我拥有的每个滚动条连接起来是多么痛苦。

最新更新