Gtk+3 GtkBuilder UI/XML 限制小部件大小



我正忙于一个关于树莓派的项目,使用g++和GtkBuilder。

这不是我的正常编程环境,所以我遇到了一个相当简单的问题,为容器中的两个对象指定不同的大小。 假设第一个按钮应该是窗口高度的 10%,第二个按钮可以取消指定,这将默认为 90%。

我想在UI或XML文件中创建小部件,因此

gtk_widget_set_size_request(widget,width,height); 

不是我要找的答案。下面是我的示例代码,

<interface>
  <object id="window" class="GtkWindow">
    <property name="title">Window</property>
    <property name="border-width">10</property>
    <child>
      <object id="mainbox" class="GtkVBox">
        <property name="visible">True</property>
        <property name="homogeneous">False</property>
        <child>
          <object id="button1" class="GtkButton">
            <property name="label">Button1</property>
          </object>
        </child>   
        <child>
          <object id="button2" class="GtkButton">
            <property name="label">Button2</property>
          </object>
        </child>      
      </object>         
    </child>
  </object>
</interface>

我试过:

<property name="default_height">100</property>
<property name="request_height">100</property>

我似乎在网络上找不到太多关于 XML/UI 方面的信息。

您使用了错误的属性名称。在文档中,您可以看到属性名称是"宽度请求"和"高度请求"。这实际上也解决了我的问题。

我在我自己的问题上找到了一些信息,尽管如此,GtkVbox 和 GtkHbox 显然很快就会被淘汰,

<property name="request-height">500</property>

在较大的按钮上,在我的例子中是底部的按钮,将请求比顶部按钮更多的空间,从而挤压顶部按钮。仍然不理想,因为您必须知道屏幕尺寸。

然而,GtkGrid 在打包方面效果要好得多,就像我在下面更改的代码中一样

<interface>
  <object id="window" class="GtkWindow">
    <property name="title">Window</property>
    <property name="border-width">10</property>
    <child>
      <object id="mainbox" class="GtkGrid">
        <property name="visible">True</property>
        <property name="row-homogeneous">True</property>
        <child>
          <object id="button1" class="GtkButton">
            <property name="label">Button1</property>
          </object>
          <packing>
            <property name="top-attach">0</property>
            <property name="height">1</property>
          </packing>
        </child>   
        <child>
          <object id="button2" class="GtkButton">
            <property name="label">Button2</property>
          </object>
          <packing>
            <property name="top-attach">1</property>
            <property name="height">9</property>
          </packing>
        </child>      
      </object>         
    </child>
  </object>
</interface>

我希望它对某人有所帮助。

相关内容

  • 没有找到相关文章

最新更新