gpt4 book ai didi

c - 在 Gtk 3 中显示图标

转载 作者:太空宇宙 更新时间:2023-11-04 04:37:54 27 4
gpt4 key购买 nike

我对 C 中的 gtk 编程还比较陌生。我使用的是带有 XQuartz 的 Mac OS 10.9,以及 gtk3(通过 macports 安装的 3.14.9_0+x11)。我试图让父窗口在标题栏中显示一个图标。我从 http://zetcode.com/tutorials/gtktutorial/firstprograms/ 中找到了以下示例

#include <gtk/gtk.h>

GdkPixbuf *create_pixbuf(const gchar * filename)
{
GdkPixbuf *pixbuf;
GError *error = NULL;
pixbuf = gdk_pixbuf_new_from_file(filename, &error);
if(!pixbuf) {
fprintf(stderr, "%s\n", error->message);
g_error_free(error);
}

return pixbuf;
}

int main( int argc, char *argv[])
{
GtkWidget *window;

gtk_init(&argc, &argv);

window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_window_set_title(GTK_WINDOW(window), "icon");
gtk_window_set_default_size(GTK_WINDOW(window), 230, 150);
gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);
gtk_window_set_icon(GTK_WINDOW(window), create_pixbuf("web.png"));
gtk_widget_show(window);

g_signal_connect_swapped(G_OBJECT(window), "destroy",
G_CALLBACK(gtk_main_quit), NULL);

gtk_main();

return 0;
}

程序编译没有错误或警告,当我运行它时窗口显示没有错误报告,除了标题栏中除了通常的 X11 图标之外没有其他图标。我确定我的工作目录中有 web.png 文件,但我已经想不出可能出了什么问题。转成GdkPixbuf的PNG文件有什么特殊要求吗?如果是这样,为什么我没有在 stderr 中收到消息?非常感谢您提供的任何帮助。

最佳答案

由于您所处的工作环境,您可能会遇到文件名编码问题。 Pixbuf 需要一个 GLib 编码的文件名。您可以找到更多相关信息 here .

尝试使用 g_filename_from_utf8() 函数并将生成的 GLib 编码字符串传递给 gdk_pixbuf_new_from_file()

关于c - 在 Gtk 3 中显示图标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29236019/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com