我正忙于一个关于树莓派的项目,使用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>
我希望它对某人有所帮助。