如果可能,如何使 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;
});
我的 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;
});