0

画像付きのボタンを作成しています。左に揃えて、ボタンのマージンからギャップをなくしたいと思います。ただし、ボタンをテキストの左側に配置しましたが、画像とボタンの境界線の間に「一定の」わずかな隙間があります。どうすればギャップをゼロにできますか?

コードは次のとおりです。

  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);

ありがとうございました。

4

1 に答える 1

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()は、GtkButton.

于 2012-06-12T03:36:48.770 に答える