0

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

这不是我正常的编程环境,所以我遇到了一个相当简单的问题,即为容器中的两个对象指定不同的大小。假设第一个按钮应该是 Window 高度的 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 方面的信息。

4

2 回答 2

2

您使用的属性名称错误。在文档中,您可以看到属性名称是“width-request”和“height-request”。这实际上也解决了我的问题。

于 2016-11-20T01:10:29.887 回答
0

我在我自己的问题上找到了一些信息,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>

我希望它可以帮助某人。

于 2015-01-15T10:19:48.140 回答