按钮

../../../_images/buttons-gallery-light.png ../../../_images/buttons-gallery-dark.png

按钮是一种可点击的 UI 元素,通常包含文本或图标。每次点击时,它都会执行一个操作。

文本按钮

文本按钮是以 GtkLabel 作为子控件的按钮。默认情况下,文本按钮会被分配 text-button CSS 类。

../../../_images/text-button-light.png ../../../_images/text-button-dark.png
<object class="GtkButton">
  <property name="label">Next</property>
</object>

图像按钮

图像按钮是以 GtkImage 作为子控件的按钮。默认情况下,图像按钮会被分配 image-button CSS 类。

../../../_images/image-button-light.png ../../../_images/image-button-dark.png
<object class="GtkButton">
  <property name="icon-name">audio-volume-muted-symbolic</property>
</object>

自定义按钮

你可以通过直接设置其子控件来决定按钮的内容,无论是通过编程方式还是在 .ui 文件中。例如,如果你想拥有一个同时包含标签和图像的按钮,你可以将各个小部件打包到一个容器中,并将该容器设置为按钮的子控件

../../../_images/custom-button-light.png ../../../_images/custom-button-dark.png
<object class="GtkButton">
  <property name="child">
    <object class="GtkBox">
      <property name="orientation">horizontal</property>
      <property name="spacing">12</property>
      <child>
        <object class="GtkImage">
          <property name="icon-name">audio-volume-muted-symbolic</property>
        </object>
      </child>
      <child>
        <object class="GtkLabel">
          <property name="label">Mute</property>
        </object>
      </child>
    </object>
  </property>
</object>

记忆符

如果你的按钮包含文本,最好为它们提供一个记忆符(即在按住 Alt 键时可以激活的带下划线的字符)。

../../../_images/mnemonic-button-light.png ../../../_images/mnemonic-button-dark.png

要在 .ui 文件中执行此操作,可以使用以下代码

<object class="GtkButton">
  <property name="label">Co_ntinue</property>
  <property name="use_underline">True</property>
</object>

请注意最后一个属性,use-underline:这是其中的关键。如果没有它,按钮标签会在 on 之间显示 _

默认小部件

在对话框中,可以标记一个小部件为默认值,这意味着当用户按下 Enter 键时,它将被激活。通常,将按钮标记为默认小部件是合适的。在最简单的情况下,你可以通过调用 gtk_widget_grab_default() 来使按钮成为默认值;你还必须设置 GtkWidget:can-default 属性才能使其生效。

gtk_widget_set_can_default (button, TRUE);

// "window" is the top level window that contains the button
gtk_window_set_default_widget (window, button);

关于默认激活还有一点值得了解,那就是当焦点位于 GtkEntry 中时,按下 Enter 键只会激活默认小部件,如果该条目被标记为“activates-default”。

gtk_entry_set_activates_default (entry, TRUE);

样式

可以为按钮赋予独特的视觉样式,这在某些情况下是合适的。

建议的操作

虽然大多数按钮具有中性颜色,但其中一些按钮可以使用不同的样式,以强调在潜在选择集合中建议的操作按钮。在默认主题中,建议的操作颜色为蓝色。

注意

建议的操作通常与默认小部件相关联。虽然默认激活更多的是关于行为,但建议的操作更多的是关于视觉效果。如果你想要前者,你可能也想要后者。有关更多信息,你应该遵循 GNOME 人机界面指南。

要将按钮标记为建议的操作,请添加 suggested-action 样式类。

../../../_images/suggested-action-button-light.png ../../../_images/suggested-action-button-dark.png

在 .ui 文件中,如下所示

<object class="GtkButton">
  <property name="label">Apply</property>
  <style>
    <class name="suggested-action"/>
  </style>
</object>

破坏性操作

执行潜在破坏性操作的按钮可以使用 destructive-action 样式类

../../../_images/destructive-action-button-light.png ../../../_images/destructive-action-button-dark.png

在 .ui 文件中,如下所示

<object class="GtkButton">
  <property name="label">Delete</property>
  <style>
    <class name="destructive-action"/>
  </style>
</object>

按钮小部件的有用方法

  • set_has_frame() 将为按钮提供“扁平”的外观,通过添加 flat CSS 类

../../../_images/flat-button-light.png ../../../_images/flat-button-dark.png

API 参考

在这个示例中,我们使用了以下内容