如果可能,如何使 Gtk.DrawingArea 在 Gtk.Fixed 容器中可见?

How to make Gtk.DrawingArea visible in a Gtk.Fixed container, if possible?

我的 Gtk.DrawingArea 只有在我将它作为小部件添加到主 window 时才会出现。如果 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);

变量fixed的类型为Gtk.Fixed。 fixed 是主要 window 的唯一子部件。我必须提到,如果我将任何其他普通的 Gtk 小部件添加到固定位置,如标签,则该标签是可见的。

如果我没有将 fixed 添加到主 window,而是将绘图区域添加为主 window 的唯一子项,如以下代码所示,它显示

// Works, rectangle is visible
app_window.add (drawing_area);

app_window 的类型是 Gtk.ApplicationWindow.

作为 Fixed 的子项时是否可以使其可见?

------------编辑----------

如果我为它设置大小请求,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 小部件现在显示在固定容器中。如果有推荐的方法,我会听取其他答案。

必须设置 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;
});