【发布时间】:2019-10-24 20:48:00
【问题描述】:
我已经编写了一个 C 程序,并且正在研究 GTK 和 Glade 来构建一个 GUI,现在我被困了至少两天:
我需要一个带有一个标签的笔记本。此选项卡中有一个按钮,如果单击,则会添加一个新选项卡。
我发现:'gtk_notebook_append_page(notebook_pointer, tab_content_pointer, label)' 但无论我做什么都不起作用。特别是我不确定将什么作为 tab_content。我收到了三分之一的错误消息:它抱怨它是顶级的,无法获取父级,或者它已经有父级,或者无法插入新标签。
有谁知道在 glade 中用作 tab_content 的内容吗?或者知道一个我可以学习的例子吗?
或者我需要转储 glade 并用 C 代码编写所有内容吗?我找到了这方面的例子。
感谢您的帮助。
【问题讨论】:
-
我一直发现直接编写代码所花费的时间要少得多,而不是使用应该生成我想要的代码的工具。我有一个设置菜单,它与 Gtk+2 中的笔记本设置类似(代码在 Gtk+3 中基本相同)gtk_settings.c
-
对我来说,将 gui 的设计和代码中的功能分开是很有吸引力的。也许我必须用 C 代码编写这样的任务,然后看看我是否可以在这个 xml 接口中表示它。这个例子真的没什么特别的,在 Glade 中一定有一个表示。
-
我应该为您的设置而不是常规的笔记本设置做些什么?
-
不,设置没什么特别的,它只是通过 C 系统地构建笔记本。用 C 编写它的一个好处是您可以进行微调。例如
/* table inside frame */块和gtk_table_set_row_spacings (GTK_TABLE (table), 5);(和col)间距的微调。我以前用过 glade(绝对喜欢glade2,它生成的 C 代码提供了微调的起点)glate3总是比它更麻烦,因为它依赖于额外的 css 进行微调。 -
应该提到的是,GtkTable 已经过时并且不推荐使用,应该改用 GtkGrid。