使用旧版GTK 2时,图像上没有出现图像

时间:2018-03-08 14:30:21

标签: gtk gtk2

我目前在使用GTK 2.6的系统上测试程序的GTK 2版本,即Ubuntu 5.04和Fedora Core 4.我遇到的问题是我无法创建没有标签的仅图像按钮。在后来的GTK版本(使用Ubuntu 6.06,Fedora 8和10测试)中,这可行。它看起来像这样:

Ubuntu 5.04和Fedora 4 Core:

enter image description here

Ubuntu 6.06(以及Fedora 8和10中的类似内容):

enter image description here

我已经下载了GTK 2.6以找到其文档中的线索,但到目前为止我还没有找到原因。

我用于仅图像按钮的代码是:

GtkWidget *button = gtk_button_new ();
gtk_button_set_image (GTK_BUTTON (button), gtk_image_new_from_stock (GTK_STOCK_REMOVE, GTK_ICON_SIZE_BUTTON)); // Example

我在这里缺少什么?

(该计划也应该在旧的和低端的系统上运行,这就是我为什么要为此烦恼的原因。)

修改

似乎我预期的行为是在2.8.14版本中引入的,这就是为什么它适用于使用GTK 2.10的Ubuntu 6.06。通过阅读文档,这对我来说并不明显。

使用gtk_container_add()将库存图像打包到按钮中是一种在使用早期版本时创建无标签图像按钮的方法。

1 个答案:

答案 0 :(得分:0)

以下是GTK + 2.6.9的gtk_button_set_image代码

/**
 * gtk_button_set_image:
 * @button: a #GtkButton
 * @image: a widget to set as the image for the button
 *
 * Set the image of @button to the given widget. Note that
 * it depends on the gtk-button-images setting whether the
 * image will be displayed or not.
 *
 * Since: 2.6
 */ 
void
gtk_button_set_image (GtkButton *button,
                      GtkWidget *image)
{
  GtkButtonPrivate *priv = GTK_BUTTON_GET_PRIVATE (button);

  priv->image = image;
  priv->image_is_stock = (image == NULL);

  gtk_button_construct_child (button);

  g_object_notify (G_OBJECT (button), "image");
}

首先,我们可以看到按钮中的图像由gtk-buttons-images setting from your gtkrc处理,因此您可能需要强制执行此操作。

我们还看到设置股票图标的方式可以不同:您可以将按钮标签设置为股票图标的名称,并将按钮的use-stock属性设置为TRUE。所以也许你也可以尝试一下。