首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >gtk DrawingArea内部扩展固定

gtk DrawingArea内部扩展固定
EN

Stack Overflow用户
提问于 2010-10-12 09:42:51
回答 2查看 1.7K关注 0票数 4

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

但是,现在我希望将不可见的小部件覆盖在DrawingArea的顶部-以便为所显示的图像部分创建工具提示事件。所以我试着把DrawingArea放在一个固定的里面--但是现在它不能扩展到填满窗口。我可以给DrawingArea一个显式的大小请求--但是我真的希望它能扩展以填满它的父窗口所分配的任何空间。我已尝试将大小请求设置为-1,但这没有任何帮助。

有什么建议吗?

EN

回答 2

Stack Overflow用户

发布于 2010-10-12 12:01:17

想出了一个可行的解决方案:

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

它似乎做了我想要做的事情,但是我注意到现在有两个"size_allocate“信号被发送给fixed --一个是当窗口调整大小时,另一个大概是当DrawingArea请求一个新的大小分配时。为了避免在第二个信号中做很多额外的不必要的工作,如果之前的高度/宽度与新的分配匹配,我就返回。但如果可能的话,我宁愿取消第二个信号。

我尝试在DrawingArea size_request之前/之后阻塞/解锁size_allocate信号,但都没有用(可能是因为我已经在size_allocation处理程序中了)。

有没有人知道一个更干净的方法来处理这个问题?

票数 1
EN

Stack Overflow用户

发布于 2010-10-14 08:21:12

这听起来像是为了避免仅仅实现一个定制的小部件而经历了很多困难。这可能值得你花时间去学习;重写大小请求/分配来获得你想要的大小,重写expose_event来绘制你的图像,重写motion_notify_event或任何其他事件处理程序来处理鼠标的位置和点击。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3911136

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档