GtkContainer/GtkWidget最大宽度

mam*_*e98 7 c gtk gtk3

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

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

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

pto*_*ato 8

这在当前版本的 GTK 中无法直接实现。一个max-widthCSS属性可以在未来的版本中实现,因为已经有很多了它的请求。

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

您还可以尝试GTK 的约束布局库Emeus,类似于 iOS 的做法。


old*_*haa 3

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

由于大小请求只是请求,而不是命令,根据具体情况,您可能无法将小部件缩小到您想要的程度,但这应该很少见。

  • 在“大小分配”信号处理程序中强制进行重新布局通常对性能不利。它通常有效,但可能会导致丑陋的“口吃”,即小部件在到达稳定的解决方案之前会跳过几次尺寸迭代。 (2认同)