【问题标题】:GTK+3.0 - Scrollbar on Treeview/ScrolledWindow - CSS properties to control scrollbarGTK+3.0 - Treeview/ScrolledWindow 上的滚动条 - 控制滚动条的 CSS 属性
【发布时间】:2020-03-10 17:56:56
【问题描述】:

在 GTK+3.0 (3.22.30) 上开发,X11 上的 openbox,Ubuntu 18.04 服务器。

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

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

我在下面尝试了这些 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-backwards-stepper”和其他属性。这是测试 CSS 语法的好地方,但我不知道如何根据需要控制外观。

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

【问题讨论】:

  • 谁能推荐一个可能的解决方案?也许集成滚动条无法按要求执行?任何建设性的建议都会有所帮助。

标签: gtk3


【解决方案1】:

我能够确定 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 对象属性的原型代码,但是要连接到我拥有的每个滚动条真是太痛苦了。

【讨论】:

  • 我有这个确切的问题。因为属性是只读的,所以拒绝设置,所以无法启用步进按钮。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-12-14
  • 2017-06-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-06
相关资源
最近更新 更多