C 使用Glade时在GTK笔记本中添加选项卡

C 使用Glade时在GTK笔记本中添加选项卡,c,gtk3,glade,C,Gtk3,Glade,我已经编写了一个C程序,正在学习GTK和Glade来构建GUI,现在我至少被困了两天: 我需要一个有一个标签的笔记本。此选项卡中有一个按钮,如果单击,将添加一个新选项卡 我发现:“gtk_笔记本_附加_页面(笔记本_指针、选项卡_内容_指针、标签)”,但无论我做什么,它都不起作用。特别是我不确定什么是标签内容。我收到三条错误消息中的一条:它抱怨它是顶级的,无法获取父级,或者它已经有父级,或者新选项卡无法插入 有人知道在林间空地上用什么作为制表符吗?或者知道一个我可以从中学习的例子 还是我需要抛弃

我已经编写了一个C程序,正在学习GTK和Glade来构建GUI,现在我至少被困了两天:

我需要一个有一个标签的笔记本。此选项卡中有一个按钮,如果单击,将添加一个新选项卡

我发现:“gtk_笔记本_附加_页面(笔记本_指针、选项卡_内容_指针、标签)”,但无论我做什么,它都不起作用。特别是我不确定什么是标签内容。我收到三条错误消息中的一条:它抱怨它是顶级的,无法获取父级,或者它已经有父级,或者新选项卡无法插入

有人知道在林间空地上用什么作为制表符吗?或者知道一个我可以从中学习的例子

还是我需要抛弃glade,用C代码写所有东西?我找到了这样的例子


谢谢你的帮助。

用Glade画一个笔记本。如果右击要更改的选项卡,可以删除其内容。(一个选项卡可以包含一个小部件,但您可以放入一个HBox或一个网格来组合多个小部件)

删除后,您可以在其中插入任何其他小部件。以下是一个例子:

有笔记本的窗户。第一个选项卡内容已删除

插入了一个框,但默认情况下它是垂直的,所以

我将属性更改为水平

我在第一个空格中插入了一个图像小部件,在第二个空格中插入了一个checkbutton。(更改计算机的主题,使其更加可见

如果您想从C代码中添加页面,您也可以这样做,只需获取笔记本的引用,然后修改选项卡内容

请注意,我建议您考虑使用Python作为GUI的管理器。在Gtk和C中管理GUI——使用Glade或不使用Glade——是一件乏味的事情。网上有几个关于如何做到这一点的示例:

-

-

此代码在此处添加了一个新选项卡:

notebook = GTK_WIDGET (gtk_builder_get_object (builder, "notebook1"));
    if (!notebook) {
        g_critical ("Widget \"%s\" is missing in file %s.",
        TOP_WINDOW, "notebook1");
    }
tab_label = gtk_label_new ("New page's tab");
page_contents = gtk_label_new ("New page's contents");

gtk_notebook_append_page(notebook, page_contents, tab_label);

请注意,您必须将“notebook1”放在Glade中笔记本小部件的ID字段中。

我总是发现,直接编写代码而不是使用生成所需代码的工具所花费的时间要少得多。我在Gtk+2中有一个类似笔记本设置的设置菜单(Gtk+3中的代码基本相同)对我来说,将gui的设计和代码中的功能分开是很有吸引力的。也许我必须用C代码编写这样一个任务,然后看看我是否可以在这个xml接口中表示它。这个例子真的没什么特别的,在Glade中必须有一个表示。我是否应该为您的设置而不是常规的notebook设置?不,没有什么特别的设置,它只是通过C系统地构建笔记本。用C编写它的好处之一是可以进行微调调整。例如,
/*框架内的表*/
块和
gtk_表设置_行间距(gtk_表(表))的微调,5);
(和
col
)间距。我以前使用过glade(非常喜欢生成C代码的glade2,它提供了微调的起点)
glate3
总是麻烦太多,因为它依赖额外的css进行微调。应该提到的是,GtkTable很旧,不推荐使用,应该使用GtkGrid。我发现绘制笔记本并不困难,但是,添加新页面不起作用。可能我没有对笔记本的有效引用.我写的程序是用C语言编写的。我需要一个用于此程序的曲面。因此,Python似乎不是一个好的选择。