GtkBox 子项之间的隐式边距

GtkBox implicit margin between children

是否可以删除 GtkBox 中两个小部件之间的所有边距?

尝试过: 将一切设置为零

结果:仍然是2px有效边距

GTK+ 版本: 3.18.9

小部件属性:

绘图代码:

auto w_out=static_cast<double>( gtk_widget_get_allocated_width(widget) );
auto h_out=static_cast<double>( gtk_widget_get_allocated_height(widget) );

cairo_set_source_rgba(cr,self->m_background.red,self->m_background.green
    ,self->m_background.blue,self->m_background.alpha);
cairo_rectangle(cr,0,0,w_out,h_out);
cairo_fill(cr);

auto img=self->r_img;
if(img!=nullptr)
    {
    //...
    }

实际尺寸符合预期,为 22 x 22。

渲染结果:

看来这不是主题问题,因为所有主题的行为都相同。

我试过相同的 Gtk 版本:

$ rpm -q gtk3-devel
gtk3-devel-3.18.9-1.fc23.x86_64

它确实没有任何边界,可以看到:

由于水平对齐设置为中心,因此图像居中。将 window 调整为最小尺寸:

使用的图像是原始图像 (22x22 px) 的裁剪图:

结论

您似乎正在创建自定义小部件,也许您遗漏了什么(需要更多详细信息)。从常规小部件(GtkImages 打包在 GtkBox 上,用 glade 测试)看来工作正常。

我找到了解决方案。我的 GtkBox 有一个非零间距。