css - 如何自定义 GtkScale 形状(C 程序)以获得像 GIMP 的 "level"窗口中的 slider

标签 css c gtk

我有一个关于 GtkScale 形状的问题。

事实上,我希望我的 Gtkscale 在 Gimp 的关卡窗口中看起来像。 我的意思是:

  • 酒吧
  • 3 个三 Angular 形(这里有一个用于阴影,一个用于中间调,一个用于高光) Sliders in gimp

我可以使用 GtkLabel 和 CSS 文件构建阴影栏:

.label-shade {
background-image: -gtk-gradient (linear,
                            left top, right top,
                            from (black),
                            to (shade (white, 0.95)));
}

但我不知道如何构建三 Angular 形 slider 。

最佳答案

为了快速实现,您可以利用 3 个嵌套的 GtkPaned 来模拟该行为:

<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.20.0 -->
<interface>
  <requires lib="gtk+" version="3.20"/>
  <object class="GtkWindow">
    <property name="can_focus">False</property>
    <child>
      <object class="GtkBox">
        <property name="visible">True</property>
        <property name="can_focus">False</property>
        <property name="orientation">vertical</property>
        <child>
          <object class="GtkLabel">
            <property name="visible">True</property>
            <property name="can_focus">False</property>
          </object>
          <packing>
            <property name="expand">True</property>
            <property name="fill">True</property>
            <property name="position">0</property>
          </packing>
        </child>
        <child>
          <object class="GtkPaned">
            <property name="visible">True</property>
            <property name="can_focus">True</property>
            <property name="wide_handle">True</property>
            <child>
              <object class="GtkPaned">
                <property name="visible">True</property>
                <property name="can_focus">True</property>
                <property name="position">10</property>
                <property name="wide_handle">True</property>
                <child>
                  <object class="GtkLabel">
                    <property name="visible">True</property>
                    <property name="can_focus">False</property>
                  </object>
                  <packing>
                    <property name="resize">True</property>
                    <property name="shrink">True</property>
                  </packing>
                </child>
                <child>
                  <object class="GtkOverlay" id="Overlay1">
                    <property name="width_request">48</property>
                    <property name="visible">True</property>
                    <property name="can_focus">False</property>
                    <child>
                      <object class="GtkImage">
                        <property name="width_request">24</property>
                        <property name="visible">True</property>
                        <property name="can_focus">False</property>
                        <property name="halign">end</property>
                        <property name="stock">gtk-go-forward</property>
                      </object>
                      <packing>
                        <property name="index">-1</property>
                      </packing>
                    </child>
                    <child type="overlay">
                      <object class="GtkImage">
                        <property name="width_request">24</property>
                        <property name="visible">True</property>
                        <property name="can_focus">False</property>
                        <property name="halign">start</property>
                        <property name="stock">gtk-goto-first</property>
                      </object>
                    </child>
                  </object>
                  <packing>
                    <property name="resize">True</property>
                    <property name="shrink">False</property>
                  </packing>
                </child>
              </object>
              <packing>
                <property name="resize">True</property>
                <property name="shrink">False</property>
              </packing>
            </child>
            <child>
              <object class="GtkPaned">
                <property name="width_request">48</property>
                <property name="visible">True</property>
                <property name="can_focus">True</property>
                <property name="wide_handle">True</property>
                <child>
                  <object class="GtkOverlay" id="Overlay2">
                    <property name="width_request">48</property>
                    <property name="visible">True</property>
                    <property name="can_focus">False</property>
                    <child>
                      <object class="GtkImage">
                        <property name="width_request">24</property>
                        <property name="visible">True</property>
                        <property name="can_focus">False</property>
                        <property name="halign">end</property>
                        <property name="stock">gtk-goto-last</property>
                      </object>
                      <packing>
                        <property name="index">-1</property>
                      </packing>
                    </child>
                    <child type="overlay">
                      <object class="GtkImage">
                        <property name="width_request">24</property>
                        <property name="visible">True</property>
                        <property name="can_focus">False</property>
                        <property name="halign">start</property>
                        <property name="stock">gtk-go-back</property>
                      </object>
                    </child>
                  </object>
                  <packing>
                    <property name="resize">True</property>
                    <property name="shrink">False</property>
                  </packing>
                </child>
                <child>
                  <object class="GtkLabel">
                    <property name="visible">True</property>
                    <property name="can_focus">False</property>
                  </object>
                  <packing>
                    <property name="resize">True</property>
                    <property name="shrink">True</property>
                  </packing>
                </child>
              </object>
              <packing>
                <property name="resize">True</property>
                <property name="shrink">False</property>
              </packing>
            </child>
          </object>
          <packing>
            <property name="expand">True</property>
            <property name="fill">True</property>
            <property name="position">1</property>
          </packing>
        </child>
      </object>
    </child>
  </object>
</interface>

关于css - 如何自定义 GtkScale 形状(C 程序)以获得像 GIMP 的 "level"窗口中的 slider ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37438087/

相关文章:

html - 用于 HTML 单选按钮的 CSS

css - 在 CSS 中使用元素的属性值作为选择器

css - 如何在 Material ui makeStyles 中使用 @supports css 规则?

c# - 当我尝试在我的网页中使用更新面板时,CSS 不工作?

c - ret2libc segfault地址为0x0000000000000000

c - 在 c 中运行命令行 "ping -S IP HOST"并获取退出代码

c - 先进先出 (FIFO) 问题

c++ - 带有GTK +/gtkmm网格的分屏

c - Gtk如何计算字符串的宽度(以像素为单位)

python - 如何使用 libchamplain 在 Python 中加载本地瓦片或 OSM XML?