gpt4 book ai didi

haskell - 自动调整容器子元素的大小(为什么不推荐使用container_resize_children)

转载 作者:行者123 更新时间:2023-12-02 21:12:31 24 4
gpt4 key购买 nike

我正在编写一个系统托盘,其大小在运行时确定(并且可能由于调整大小而更改),并且我想调整托盘图标的大小,以便它们扩展到它们所在的容器对象的大小已放置。

我实际上已经通过以下方式让它工作:注册为 gtk_image 小部件分配的信号大小,并为其分配一个大小与在提供的回调函数中分配给该图像小部件的高度相匹配的 pixbuf。

这种方法的唯一问题是,这似乎不会触发图像小部件的大小调整(即使我显式调用 widget_set_size_request),这会导致此问题:tray images overlap对图像和包含框调用 widget_queue_draw 或 widget_queue_resize 并不能改善此问题,但调用已弃用的函数 gtk_container_resize_children 确实可以解决此问题: enter image description here

我的问题是

  • 为什么 gtk_container_resize_children 被弃用?
  • 我的方法是仅在收到声音大小分配信号时才实际设置图像的 pixbuf,还是有更好的方法?
  • 为什么 widget_queue_draw 在这里也不起作用?

您可以在这里找到有问题的实际代码,但它是用 Haskell 编写的,因此如果您不熟悉该语言,可能很难理解:

https://github.com/IvanMalison/gtk-sni-tray/blob/4e7750b2893dc3c6c0091355f3c9b42ab35dcdf2/src/StatusNotifier/Tray.hs#L166

最佳答案

查看implementation of gtk_container_resize_children ,看来您应该能够将其替换为对 gtk_widget_get_allocated_size 的调用和 gtk_widget_allocate_with_baseline ,这两者在 GTK+ 3 中都没有被弃用。

关于haskell - 自动调整容器子元素的大小(为什么不推荐使用container_resize_children),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50030340/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com