是否有GTK +的方式堆叠在另一个的顶部一个微件 - 不计算GtkFixed? GtkFixed不会有两个原因很好地工作:1)I需要的Z顺序,和2)I需要一个微件伸展和填充提供空间

有帮助吗?

解决方案

我不认为这是在标准的GTK合适的容器中。我将继承的Gtk ::固定...它仍然是一个最接近你可以得到,如果你使用的gtkmm则继承不应该是很difficult¹。然后可以控制所有小部件的尺寸,拉伸一个选择的子来填充空间。

要控制Z轴,你可能需要操纵部件的X窗口 - 在GDKwindows²的话题检查GDK文档。我记得在PyGTK的每个插件都有gtk.Widget.window财产,我想这同样是对gtkmm的。这是假设所有的子控件有X窗口,所以F.E.你需要包装的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

其他提示

我不得不使用的Gtk ::修复了这个问题,确切的(实际上gtk.Fixed - pygtk的 - 但我认为这是骨子里一样),我是能够通过操纵每个插件的窗口很容易地处理它

在我的情况下,小部件已经是事件盒的情况下,我只需要确保一个我拖着周围的人在上面,因为否则下跌他人,看得出来非常错误的下面。该解决方案是一样简单调用“widget.window.raise_()”,以提高小部件的基础窗口被点击以开始拖动窗口小部件时。

所以我基本上只是重申以前的答案的作品,但我想指出的是,它实际上是很容易的。这听起来像你可能需要创建一些EventBoxes牵你的小部件,但在那之后它应该只是工作。

您可以看到我在 http://github.com/divegeek/BlockHead

我能够做到这些 -

  

显示一个微件的固定位置处填充整个空间,然后另一个之上,二者同时可见

在通过使用GtkFixed,制定出一个合适的插入顺序的gtk2(第一插入 - 底部,最后插入的 - 顶部),以及 - 的最重要!! - 迫使GtkFixed有它自己的窗口:

`f := gtk_fixed_new();
gtk_widget_set_has_window(f, 1);`

如果你不这样做set_has_window(F,1),所有儿童的窗户会被插入到一些父控件/窗口(见gtkfixed.c gtk_fixed_realize()),并有可能创造z顺序混乱。

scroll top