GtkContainer/GtkWidget 最大宽度
GtkContainer/GtkWidget maximum width
我正在尝试编写一个包含 GtkBox(水平)的应用程序,我根据各种条件在其中添加动态数量的按钮(带有标签)。现在
我想防止 GtkBox 增长超过(例如)600px。按钮标签可以是椭圆形的。
所以我的问题是,有什么通用的方法可以解决这个问题吗?如果没有,我想我将不得不创建一个新的 Container Class 来观察它的大小。
我正在使用 C API for GTK (gtk+-3.0
)
没有简单的方法来限制小部件的大小,至少据我所知是这样。您可以做的是在收到时附加到 size-allocate
signal and call set_size_request
。
由于大小请求只是请求,而不是命令,根据具体情况,您可能无法随心所欲地缩小小部件,但这种情况应该很少见。
当前版本的 GTK 无法直接实现这一点。 max-width
CSS 属性 可能会在未来的版本中实现,因为已经有很多请求了。
您要做的确实是创建一个新的容器子类。您可能会从 GtkBin
继承以保持简单,并且在您的 size_allocate
处理程序中只需将宽度限制为最大值,然后再将其传递给子小部件。
您也可以尝试 Emeus,GTK 的约束布局库,类似于 iOS 的做法。
我正在尝试编写一个包含 GtkBox(水平)的应用程序,我根据各种条件在其中添加动态数量的按钮(带有标签)。现在 我想防止 GtkBox 增长超过(例如)600px。按钮标签可以是椭圆形的。
所以我的问题是,有什么通用的方法可以解决这个问题吗?如果没有,我想我将不得不创建一个新的 Container Class 来观察它的大小。
我正在使用 C API for GTK (gtk+-3.0
)
没有简单的方法来限制小部件的大小,至少据我所知是这样。您可以做的是在收到时附加到 size-allocate
signal and call set_size_request
。
由于大小请求只是请求,而不是命令,根据具体情况,您可能无法随心所欲地缩小小部件,但这种情况应该很少见。
当前版本的 GTK 无法直接实现这一点。 max-width
CSS 属性 可能会在未来的版本中实现,因为已经有很多请求了。
您要做的确实是创建一个新的容器子类。您可能会从 GtkBin
继承以保持简单,并且在您的 size_allocate
处理程序中只需将宽度限制为最大值,然后再将其传递给子小部件。
您也可以尝试 Emeus,GTK 的约束布局库,类似于 iOS 的做法。