我正在创建一个带有图像的按钮。我想让它左对齐,按钮边缘没有GAP。然而,尽管我将按钮对准了文本的左侧,但图像和按钮边框之间存在一个小的“固定”间隙。我怎样才能将差距归零?
以下是代码:
GtkWidget *button;
GtkWidget *buttonImage;
GtkSettings *default_settings = gtk_settings_get_default();
g_object_set(default_settings, "gtk-button-images", TRUE, NULL);
buttonImage = gtk_image_new();
gtk_image_set_from_file(GTK_IMAGE(buttonImage),"icon.jpg");
button= gtk_button_new_with_label("Click");
gtk_button_set_relief ((GtkButton *)button, GTK_RELIEF_NONE);
gtk_button_set_image((GtkButton *)button, buttonImage);
gtk_button_set_image_position((GtkButton *)button, GTK_POS_LEFT);
谢谢。
答案 0 :(得分:1)
主题可能会添加一些填充和/或边框空间。这变得复杂,因为不同的用户可能出于不同的原因而具有不同因此,保留这些特定于主题的设置通常是个好主意。话虽这么说,但在某些情况下您需要覆盖这些设置。例如,文本编辑器的选项卡具有带有GTK_STOCK_CLOSE按钮的GtkButton。此按钮需要删除所有填充和边框,以便它只是它的图像大小。您可以根据自己的需要调整此技术。
在GTK + 3中,这可以通过GtkCssProvider和GtkStyleContext完成。
const gchar data[] = * { "
"-GtkButton-default-border : 0; "
"-GtkButton-default-outside-border : 0; "
"-GtkButton-inner-border: 0; "
"-GtkWidget-focus-line-width : 0; "
"-GtkWidget-focus-padding : 0; "
"padding: 0; "
"}";
context = gtk_widget_get_style_context (GTK_WIDGET(button));
provider = gtk_css_provider_new ();
gtk_css_provider_load_from_data (provider, data, -1, NULL);
gtk_style_context_add_provider (context,
GTK_STYLE_PROVIDER (provider),
GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);
该代码可能不太正确,但它应该指向正确的方向。我只在Python中实现了这种技术。
如果您正在为GTK + 2开发,我以前的方式是通过调用{"样式集" gtk_widget_set_size_request()
的信号。