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

时间:2015-01-14 16:35:45

标签: xml user-interface gtk gtkbuilder

我正在使用g ++和GtkBuilder忙于一个关于覆盆子pi的项目。

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

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分: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>

我希望它有所帮助。