7

我想获取一个库存项目以在树视图中使用它,但我不能直接将它作为 pixbuf 获取,因为没有new_from_stockpixbufs 的方法!

4

4 回答 4

4

说你想从stock_item.

有2种方式:

首先(简单):

pixbuf = gtk_widget_render_icon ( widget, stock_item, size )

第二(硬):

您需要在默认图标工厂列表中查找它:

icon_set = gtk_style_lookup_icon_set ( style, stock_item )

或者:

icon_set = gtk_icon_factory_lookup_default ( $stock_item )

然后使用 . 检查可用尺寸get_sizes。检查您想要的尺寸是否可用或获取最大尺寸,这将是返回列表中的最后一个。然后你需要渲染它来获取pixbuf:

pixbuf = gtk_icon_set_render_icon ( icon_set, style, direction, state, size, widget )

然后将其缩放到您想要使用的任何大小:

gdk_pixbuf_scale_simple ( pixbuf, width, height, GdkInterpType )

希望你明白了

于 2013-08-23T13:31:27.953 回答
2

你知道 GtkCellRendererPixbuf 中的 icon-name 属性吗?这应该解决在树视图中显示股票图标的问题。

于 2013-08-23T12:51:03.360 回答
0

ophidion 答案的一个稍微简单(且更面向未来)的版本是执行以下操作:

#define ICON_NAME "go-next"
#define ICON_SIZE 96 /* pixels */

GError *error = NULL;

GtkIconTheme *icon_theme = gtk_icon_theme_get_default();
GdkPixbuf *pixbuf = gtk_icon_theme_load_icon(icon_theme, ICON_NAME, ICON_SIZE,
                                             GTK_ICON_LOOKUP_USE_BUILTIN, &error);

假设您没有收到错误,那么您可以将结果GdkPixbuf放入树模型中,或者将其与 a 一起使用GtkButton,或者您想要使用它做的任何其他事情。

正如其他人指出的那样,GTK 库存商品可能已被弃用,因此如果您想成为未来的证明,您应该根据图标命名规范使用名称。有关 GTK 库存项目的等效图标规范名称,请参阅此 Google Docs 电子表格

于 2013-10-04T05:54:39.773 回答
-1

您可以使用gtk_image_new_from_stock(),然后使用gtk_image_get_pixbuf().

但请先查看@jku 的答案,这听起来像是正确的解决方案。我只是想添加您在任何其他情况下的操作方式。

于 2013-08-23T12:53:15.667 回答