仅当我将其作为窗口小部件添加到主窗口时,才会显示我的Gtk.DrawingArea。如果Window中有一个固定的容器,我将DrawingArea添加到固定容器中,我什么也看不见。但我知道调试时会调用绘制信号。
Gtk.DrawingArea drawing_area = new Gtk.DrawingArea ();
drawing_area.draw.connect ((context) => {
context.set_source_rgba (1, 0, 0, 1);
context.rectangle (25, 25, 100, 100);
context.fill ();
return true;
});
// Doesn't work, nothing is visible
fixed.put (drawing_area, 25, 25);
变量已修复的类型为 Gtk.Fixed 。 fixed是主窗口的唯一子窗口小部件。我必须提一下,如果我添加任何其他正常的Gtk Widget固定,如标签,所述标签是可见的。
如果我,而不是添加固定到我的主窗口,我将绘图区域添加为主窗口的唯一子项,如下面的代码所示,它显示
// Works, rectangle is visible
app_window.add (drawing_area);
app_window 的类型为 Gtk.ApplicationWindow 。
是否可以在成为固定的孩子时使其可见?
---------- ----------编辑
如果我为它设置了大小请求,Gtk.DrawingArea现在会出现在固定容器中。喜欢这个
Gtk.DrawingArea drawing_area = new Gtk.DrawingArea ();
drawing_area.width_request = 100;
drawing_area.height_request = 100;
drawing_area.draw.connect ((context) => {
context.set_source_rgba (1, 0, 0, 1);
context.rectangle (0, 0, drawing_area.get_allocated_width (), drawing_area.get_allocated_height ());
context.fill ();
return true;
});
我不知道这是否是正确的方法。虽然它有效。带有矩形的DrawingArea小部件现在显示在固定容器中。如果有推荐的方法,我会听取其他答案。
答案 0 :(得分:3)
必须设置Gtk.DrawingArea小部件的大小请求。
Gtk.DrawingArea drawing_area = new Gtk.DrawingArea ();
drawing_area.width_request = 100;
drawing_area.height_request = 100;
drawing_area.draw.connect ((context) => {
context.set_source_rgba (1, 0, 0, 1);
context.rectangle (0, 0, drawing_area.get_allocated_width (), drawing_area.get_allocated_height ());
context.fill ();
return true;
});