You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Glade的GtkHeaderBar两侧添加子控件?

在Glade中给GtkHeaderBar左侧添加按钮的方法

我搜索过相关问题,得知需修改pack type但无细节说明。我可添加按钮并将其pack type设为“End”,但尝试添加另一个子控件并设置pack type为“Start”时,会收到需占位符的错误提示。以下是我的示例代码,请问如何在该示例的标题栏左侧再添加一个按钮?

Glade界面截图

<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.40.0 -->
<interface>
  <requires lib="gtk+" version="3.24"/>
  <object class="GtkWindow">
    <property name="can-focus">False</property>
    <property name="default-width">440</property>
    <child>
      <placeholder/>
    </child>
    <child type="titlebar">
      <object class="GtkHeaderBar">
        <property name="visible">True</property>
        <property name="can-focus">False</property>
        <property name="title" translatable="yes">Damn complex</property>
        <property name="subtitle" translatable="yes">why</property>
        <property name="show-close-button">True</property>
        <child>
          <object class="GtkButton">
            <property name="label" translatable="yes">button</property>
            <property name="visible">True</property>
            <property name="can-focus">True</property>
            <property name="receives-default">True</property>
          </object>
          <packing>
            <property name="pack-type">end</property>
          </packing>
        </child>
      </object>
    </child>
  </object>
</interface>

PS:我已能通过C#代码编程实现该功能,但仍未找到在Glade中操作的方法。

C#代码实现效果截图

private MainWindow(Builder builder) : base(builder.GetRawOwnedObject("MainWindow"))
    {
        builder.Autoconnect(this);
        DeleteEvent += Window_DeleteEvent;
        var btn1 = new Button() { Label = "Left"};
        var btn2 = new Button() { Label = "Right" };
        header1.PackStart(btn1);
        header1.PackEnd(btn2);
        header1.ShowAll();
    }

内容的提问来源于stack exchange,提问作者Damn Vegetables

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 21:05:25