有没有在GTK +的方式堆叠在另一个上面的一个小部件 - 不计GtkFixed? GtkFixed不会,原因有两个正常工作:1)我需要Z顺序,和2)我需要一个小工具,舒展,并填写提供空间。
Answer 1:
我不认为这是在标准的GTK合适的容器中。 我将继承的Gtk ::固定...它仍然是一个最接近你可以得到,如果你使用的gtkmm则继承不应该是很difficult¹。 然后你就可以控制所有部件的尺寸,绵延一分所选子,以填补空间。
为了控制Z轴,你可能需要操纵部件的X窗口 - 在GDKwindows²的话题检查GDK文档。 我记得在PyGTK的每个插件都有gtk.Widget.window财产,我想这同样是对gtkmm的。 这是假设所有的子控件有X窗口,所以FE你需要包装的Gtk ::基于GTK ::事件盒里面的标签。
¹ http://www.gtkmm.org/docs/gtkmm-2.4/docs/tutorial/html/chapter-customwidgets.html
² http://www.gtkmm.org/docs/gtkmm-2.4/docs/reference/html/classGdk_1_1Window.html#6eef65b862344ad01b01e527f2c39741
Answer 2:
我用了一个GTK ::修复了这个问题,确切的(实际上gtk.Fixed - pygtk的 - 但我认为这是完全一样的下方),然后我就能够通过操纵每个插件的窗口很容易地处理它。
在我的情况下,小部件已经是事件盒的情况下,我只需要确保一个我拖着周围的人在上面,因为否则下跌他人,看得出来非常错误的下面。 该解决方案是为调用一样简单“widget.window.raise_()”,以提高小部件的基础窗口被点击widget时开始拖动。
所以我基本上只是重申以前的答案的作品,但我想指出的是,它实际上是很容易的。 这听起来像你可能需要创建一些EventBoxes牵你的小部件,但在那之后它应该只是工作。
你可以看到我在工作的代码http://github.com/divegeek/BlockHead