GtkContainer / GtkWidget最大宽度

时间:2016-10-09 17:05:41

标签: c gtk gtk3

我正在尝试编写一个包含GtkBox(水平)的应用程序,我根据不同的条件添加动态数量的按钮(带标签)。现在 我想阻止GtkBox增长超过(例如)600px。按钮标签可以进行椭圆化。

所以我的问题是,有没有解决这个问题的常用方法?如果没有,我想我将不得不创建一个新的容器类,它将观察它的大小。

我正在使用GT API的C API(gtk+-3.0

2 个答案:

答案 0 :(得分:3)

没有简单的方法来限制小部件的大小,至少就我所知。您可以做的是附加到size-allocate信号,并在收到时致电set_size_request

由于大小请求只是请求,而不是命令,因此根据情况,您可能无法按照自己的意愿缩小小部件,但这种情况应该很少见。

答案 1 :(得分:3)

当前版本的GTK无法直接实现。 max-width CSS属性可能会在将来的版本中实现,因为有很多请求。

你要做的是确实创建一个新的容器子类。您可以继承GtkBin以保持简单,并且在size_allocate处理程序中,只需将宽度限制为最大值,然后再将其传递给子窗口小部件。

您还可以试用Emeus,即GTK的约束布局库,类似于iOS的实现方式。