c - Gtk 和 gtk builder 显示不同的版本

标签 c gtk glade

我正在尝试使用 Gtk 和 glade 构建一个 helloworld 窗口。代码编译正常,但在运行时它在 gtk_builder_add_from_file 上失败。奇怪的是,错误报告的当前 gtk 版本与我使用 gtk_get_major_version/gtk_get_minor_version 获得的版本不同。

GtkBuilder *builder; 
GtkWidget *window;
GError *err = NULL;
gtk_init(NULL,NULL);

printf("maj %d, min %d\n",gtk_get_major_version (),gtk_get_minor_version ());
builder = gtk_builder_new();

gtk_builder_add_from_file (builder, "/path/to/ui.glade", &err);
if (err != NULL)
{
    printf ("%s\n", err->message);
    g_error_free (err);
}

window = GTK_WIDGET(gtk_builder_get_object(builder, "mywin"));

gtk_widget_show(window);
g_object_unref(builder);
gtk_main();
...

标准输出:

maj 3, min 2
/path/to/ui.glade: required gtk+ version 3.2, current version is 2.24

最佳答案

毫无疑问,glade 文件是使用 Glade 3.x 创建的,而您的应用程序是针对 Gtk 版本 2.x 编译的。

如果您已经在计算机上创建了 glade 文件,那么您很可能同时拥有 Gtk 2 和 Gtk 3 的运行时文件和开发人员文件。

如果是这样,那么您必须更改您的编译指令以链接到 Gtk 3。为此检查您的 pkg-config 指令并检查它是 gtk+-2.0 还是 gtk+-3.0。它很可能会说 gtk+-2.0,更改为 gtk+-3.0。

也有可能您没有安装 gtk3 开发包,如果有,请安装它们。

Glade XML 文件保留对所需的最低 gtk 版本的引用,更改它可能会“解决”问题,但如果您使用仅在 gtk 3 上可用的小部件,它将不起作用。

另一种选择是安装 Glade 2,但最好使用最新的 Gtk 版本,因为其他版本都比较旧。

同时检查您的 glade 菜单,File > Properties 并检查所需的 Toolkit 版本

enter image description here

关于c - Gtk 和 gtk builder 显示不同的版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49630296/

相关文章:

检查C中的输入流是否为空

c - 尝试根据参数数量而不是类型在 C 中实现函数重载

python - PyGTK 笔记本 get_current_page() 不起作用

创建 gtk 信号以编辑在其他线程中运行的 GtkWidget

python - 你如何在 Python 中绘制网格和矩形?

python - 最好的记录 python 友好的 GUI 构建器,如 GLADE

python - 将 glade 接口(interface)放入 python

c - 在 (C) 中远程登录时出现段错误 11

c - 这段代码给出了一个荒谬的答案

c - 为 gtk_overlay 添加背景颜色