我想在树视图中使用一个库存项目,但我不能直接将其作为pixbuf,因为pixbufs没有new_from_stock
方法!!
答案 0 :(得分:4)
说你想从stock_item
获得一个pixbuf。
有两种方式:
首先(简单):
pixbuf = gtk_widget_render_icon ( widget, stock_item, size )
第二(硬):
您需要在默认图标工厂列表中查找它:
icon_set = gtk_style_lookup_icon_set ( style, stock_item )
OR:
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 )
希望你明白了
答案 1 :(得分:2)
你知道GtkCellRendererPixbuf中的icon-name属性吗?这应该可以解决在树视图中显示股票图标的问题。
答案 2 :(得分: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
放在树模型中,或者将其与GtkButton
一起使用,或者您想要使用其他任何内容。
正如其他人指出的那样GTK stock items are likely to be deprecated,所以如果你想成为未来的证据,你应该根据Icon Naming Spec使用名称。有关GTK库存商品的等效图标规格名称,请参阅this Google Docs spreadsheet。
答案 3 :(得分:-1)
您可以使用gtk_image_new_from_stock()
,然后使用gtk_image_get_pixbuf()
获取原始pixbuf。
但请先查看@jku's回答,这听起来像是正确的解决方案。我只想添加你在其他任何环境中的表现。