XML文档如何与GTK协作创建用户界面?

5

我正在开发一个使用C/GTK+3的项目。我对前端有一点经验,但主要是在Android方面,即使那也非常少。

我注意到在C代码中我可以放置对象并设置属性(例如文本视图是否可编辑等)。我还能够使用构建器函数将.ui XML文件连接到我的程序。

我想知道XML文件如何与定义界面的C代码链接。它是按结构、名称还是ID属性匹配的?为什么在C代码和XML中都存在"visible"和"editable"等属性?需要XML文件吗?需要在XML文件和C代码中都指定属性还是只需要一个?我是否能完全理解前端开发?


我很久以前就从gtkmm 2.x切换到Qt了(因为gtkmm3和Windows在我们这里无法很好地协同工作),但GTKUIManager似乎仍然存在。它可以用于读取UI文件,但您也可以在字符串“内联”中提供XML代码。 - Scheff's Cat
发现了其他内容:构建应用程序 - 填充窗口 - Scheff's Cat
顺便说一下,你不需要UI文件或GTKUIManager - 它实际上是为了方便。我们通常在纯C++代码中创建所有小部件,咳咳,在你的情况下是C代码。或者,你是在问Glade吗?(抱歉,没有经验 - 一点也没有。) - Scheff's Cat
我很欣慰听到我不需要UI文件/GTKUIManager!我没有使用glade,但我只是按照教程(你发布的填充窗口教程)操作,并且作为一个UI初学者,我想知道所有这些XML文件如何绑定。 - Julia Moffitt
请参见例如 GtkLabel。该页面提供了带有和不带有 UI 定义的示例。 - Scheff's Cat
显示剩余2条评论
1个回答

6

构建用户界面有两种方法:

  1. 编写代码。
  2. 编写描述用户界面的文件,并在运行时构建用户界面。

如果自己编写代码,每次想要移动小部件时,都必须修改需要编译的代码。这对于小型 UI 是可行的,并且是大多数教程中所做的。

如果使用 UI 文件,则可以使用 Glade 应用程序以图形方式设计 UI,并由其为您编写 UI 文件。这也有助于拆分责任:您可以让设计人员负责 UI,并让开发人员专注于行为。即使没有这样做,使用 Glade 等编辑器比手动编码更快地设计 UI。您可以跳过所有的编译/调试周期。

在您的UI文件中,如果将一个小部件命名为"bob",则可以通过将其名称传递给gtk_builder_get_object来在代码中获取它。 GtkBuilder负责构建和内存管理,因此如果需要再次显示它们,请不要销毁它创建的小部件,而是隐藏它们。
您可以在GTK文档中找到使用UI文件的示例: https://developer.gnome.org/gtk3/stable/ch01s04.html#id-1.2.3.12.5

谢谢!这真的帮助我理解了,非常感谢! - Julia Moffitt

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接