我正在使用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方面的更多信息。
答案 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>
我希望它有所帮助。