gtk DrawingArea扩展内部固定

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

但是,现在我想在DrawingArea的顶部覆盖不可见的小部件 – 以便为显示的图像部分创建工具提示事件.所以我试图将DrawingArea置于一个固定的位置 – 但现在它不会扩展以填充窗口.我可以给DrawingArea一个明确的大小请求 – 但我真的希望它扩展以填充它的父窗口已经给出的任何空间分配.我已经尝试将大小请求设置为-1,但这没有任何帮助.

有什么建议?

最佳答案 提出了一种有效的解决方案:

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

它似乎做了我想要的,但是我现在注意到两个“size_allocate”信号被发送到fixed – 一个是在调整窗口大小时,另一个可能是在DrawingArea请求新的大小分配时.为了避免在第二个信号中做很多额外的不必要的工作,我只返回前一个高度/宽度是否匹配新的分配.但如果可能的话,我宁愿废除第二个信号.

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

有谁知道更清洁的方式来处理这个?

点赞