Gtk3 GtkBox子对象之间的隐式边界

Gtk3 GtkBox子对象之间的隐式边界,gtk3,margins,Gtk3,Margins,是否可以删除GtkBox中两个小部件之间的所有边距 已尝试:将所有设置为零 结果:仍为2倍有效保证金 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

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

已尝试:将所有设置为零

结果:仍为2倍有效保证金

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)
    {
    //...
    }

图纸代码:

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)
    {
    //...
    }
auto w_out=static_cast(gtk_小部件_get_allocated_width(小部件));
自动h_out=静态施法(gtk_小部件_获取_分配的_高度(小部件));
cairo\u set\u source\u rgba(cr,self->m\u background.red,self->m\u background.green
,self->m_background.blue,self->m_background.alpha);
cairo_矩形(cr,0,0,w_out,h_out);
开罗填料(cr);
自动调模=自->调模;
如果(img!=nullptr)
{
//...
}
实际尺寸为22 x 22

渲染结果


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

我在同一个Gtk版本上尝试过:

$ rpm -q gtk3-devel
gtk3-devel-3.18.9-1.fc23.x86_64
正如我们所见,它确实在没有任何边界的情况下发挥了作用:

由于将“水平对齐”设置为“中心”,因此图像居中。将窗口大小调整为最小大小:

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

结论


似乎您正在创建一个自定义小部件,可能您缺少了一些东西(需要更多详细信息)。从常规小部件(打包在GtkBox上的GtkImages,用glade测试)来看,它似乎工作正常。

我找到了解决方案。GtkBox的间距不是零