• 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏吧

gtk DrawingArea展开内部固定

gtk 来源:aaa90210 5次浏览

我目前在一个Frame中加载一个DrawingArea小部件 – 它总是展开以填充框架。然后我可以在DrawingArea上设置configure事件来分配一个与窗口大小相同的像素图,然后绘制它,然后将这个像素图绘制到DrawingArea中(使用draw_drawable)。gtk DrawingArea展开内部固定

但是,现在我想在DrawingArea的顶部覆盖隐藏的小部件 – 以便为显示的图像的某些部分创建工具提示事件。所以我试图把DrawingArea放在一个Fixed中 – 但现在它不能扩展到填满窗口。我可以给DrawingArea一个明确的大小请求 – 但是我真的很喜欢它扩展来填充它的父窗口已经给出的空间分配。我已经尝试将大小请求设置为-1,但这没有任何帮助。

有什么建议吗?

===========解决方案如下:

心中有了几分是有效的解决方案:

  • 创建固定。
  • 创建一个DrawingArea并将其添加到Fixed。
  • 连接固定为“size_allocate”信号,并在信号处理程序中获取固定分配(宽度和高度),然后获取DrawingArea以创建当前分配的size_request。

这似乎做我想做的,但我现在发现,两个“size_allocate”信号被发送到固定的 – 当一个窗口大小,另一个大概在绘图区请求新的大小分配。为了避免在第二个信号中做很多额外的不必要的工作,如果以前的高度/宽度匹配新的分配,我就返回。但是,如果可能的话,我宁愿放弃第二个信号。

我试图在DrawingArea size_request之前/之后阻塞/解除size_allocate信号无效(可能是因为我已经在size_allocation处理程序中)。

任何人都知道一个更清洁的方式来处理这个问题?


版权声明:本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系管理员进行删除。
喜欢 (0)