我想获取一个库存项目以在树视图中使用它,但我不能直接将它作为 pixbuf 获取,因为没有new_from_stock
pixbufs 的方法!
问问题
1640 次
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 回答