如何在gtk中的ohter小部件前面创建一个小部件

时间:2015-08-19 01:38:52

标签: layout widget gtk gtk#

我想在容器的前面(固定)创建一个小部件(自定义小部件),就像在网页设计中设置“z-index”一样。但我没有找到任何方法可以做到这一点。

例如。

Button bt1 = new Button();
Button bt2 = new Button();
bt1.WidthRequest = 100;
bt2.WidthRequest = 100;
Fixed fx1 = new Fixed();
fx1.put(bt1,0,0);
fx1.put(bt2,50,0);

然后bt2将覆盖bt1,因为bt2是最后添加的小部件。现在我希望bt1覆盖bt2,即bt1位于fx1的前面。怎么做?

有一个类似的问题,其答案无法解决。 GTK# Widget in front of another widget

1 个答案:

答案 0 :(得分:1)

我自己解决了!

使用GdkWindow.Raise(),如下所示:Stacking widgets in Gtk+

在我的例子中,使用bt1.GdkWindow.Raise()将具有容器中bt1的从头到尾操作的效果。

请注意,如果窗口小部件不是"窗口" (由于我对Gtk的了解有限,我不能准确地知道窗口的详细定义#)这不会起作用。

在这种情况下,可以将小部件封装在“事件框”中。而且应该在其GdkWindow上调用Raise()(类似于" ModifyBg(...)"不能在某些小部件上工作,但它适用于事件框)。