首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将css应用于Gtk3-css中的所有子元素?

如何将css应用于Gtk3-css中的所有子元素?
EN

Stack Overflow用户
提问于 2015-04-07 03:09:45
回答 1查看 1.2K关注 0票数 1

嵌套组件的问题:

我正在尝试将背景应用到GtkComboBoxText。

我正在获取小部件的上下文,并对其应用CSS:

代码语言:javascript
复制
 * { background: red } 

这不会更改GtkComboBoxText的颜色。但它适用于GtkButton和GtkLabel。

看看GtkInspector,GtkComboBoxText似乎有像GtkToggleButton和GtkEntry这样的嵌套控件,上面的CSS没有应用到它们。如果我通过gtk_container_forall(..)手动遍历所有嵌套的组件,并挑选出选定的组件,然后进行背景着色。但我似乎找不到一种方法来将CSS应用于GtkComboBoxText,并让它向下遍历所有的子对象?

这个是可能的吗?

测试代码片段

可以在repo中找到测试片段:https://github.com/LeoUfimtsev/LeoGtk3/tree/3_GtkCombo_background

要运行:

代码语言:javascript
复制
  git clone https://github.com/LeoUfimtsev/LeoGtk3.git
  make
  ./main

尝试过的东西:

代码语言:javascript
复制
 * {background:red}
 * {background-color:red} //no impact

 GtkComboBoxText * { background: red}
 GtkComboBoxText * { background-color: red}

请注意:

如果我运行代码片段,然后打开CSS检查器,然后应用:

代码语言:javascript
复制
 * {background: red} 

对于每个单独的子小部件:

GtkComboBoxText

  • GtkToggleButton <<
  • GtkTreeMenu <<

然后背景颜色就可以工作了。

编辑-使用样式类?

似乎有一种方法是将样式类添加到小部件中,然后从全局css中选择它。这里有一个例子:https://github.com/LeoUfimtsev/LeoGtk3/blob/057884368bf38a626dbaac5c575c15a5e1c93f2f/main.c#L35

但是,如果您要在GTK之上实现图形库,这是不现实的,因为您需要处理1000个类。

EN

回答 1

Stack Overflow用户

发布于 2015-04-07 03:26:07

你试过这个吗?

代码语言:javascript
复制
GtkComboBoxText * {
  background-color: red;
}

如果GTK+不支持上面的css,那么它支持GtkBin * {/* styles here */},它会将样式应用于GtkBin的所有子元素,因此您可以将GtkComboBoxText放在GtkBin元素中(该元素可能还需要GtkComboBox在层次结构中排在第一位,因此层次结构是GtkBin > GtkComboBox GtkComboBoxText)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29477917

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档