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 有一个非零间距。
是否可以删除 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 有一个非零间距。