您可以将 GTK4 应用程序窗口从 ui 文件添加到 GTK4 应用程序吗?

问题描述 投票:0回答:1

我才使用 GTK 几天,因为我的 go 程序需要 GUI,所以这是一个新手问题。作为新手,我采用了我能找到的最简单的方法来开始使用 Cambalache 生成一个 .UI 文件,然后在我的 go 应用程序中调用它。

我将所有内容放在 .UI 文件中的 ApplicationWindow 下,并让它加载并与 gkt4-builder-tool 一起正常工作,但在我的 go 应用程序中,我在 GUI 中没有收到任何事件。查看示例代码,我发现我需要将 ApplicationWindow 附加到在我的 go 程序中实例化的 GTK 应用程序,我通过将 ApplicationWindow 更改为一个窗口来验证这一点,它工作得很好,因为我可以添加一个正常的窗口GTK 应用程序的窗口。

问题是我无法找到从 UI 文件中提取应用程序窗口后将其附加到应用程序的方法。将窗口附加到应用程序的唯一方法是 app.AddWindow() ,但这仅添加 GtkWindow,而不是 GtkApplicationWindow,并且在像 go 这样的强类型语言中,这是“不行”(没有双关语)。

您可以将 GTK 应用程序与 ApplicationWindow 一起直接导出到 .UI 文件中,理论上,如果您能成功执行此操作,您可以将它们都提取出来,也许可以通过这种方式将它们加入,但是,我还没有成功导出 GTK 应用程序、ApplicationWindow和菜单作为 gkt4-builder-tool 总是会出现验证错误(在尝试许多配置之后),因此 Cambalache 不知道如何导出该组合;或者我不知道如何让它这样做;或者它实际上并不是 .UI 文件中的合法组合。

所以我的问题是,我是否应该放弃尝试将 ApplicationWindow 存储在 .UI 文件中,而只在代码中构建 ApplicationWindow 小部件,或者是否还有其他我尚未学习的选项?

如果不是真的有必要,我可以放弃 ApplicationWindow,而将 Windows 作为另一条路径。

您的知识和经验值得赞赏。

谢谢!

go gtk gtk4
1个回答
0
投票

对。这是一个非常复杂的问题,无法检查代码就很难理解。基本上, ApplicationWindowGktWindow 之间的区别只是在 ApplicationWindow 中,管理诸如关闭按钮、菜单等之类的事情是通过与应用程序集成自动完成的。因此,没有什么可以阻止您使用 GtkWindow 并手动管理它。

无论如何,在我看来,您没有正确理解使用组件的流程。一般来说,一个应用程序只需要一个ApplicationWindow,其余的可以通过GktWindow来完成。此外,是否使用 .ui 文件是一种选择,尽管它们使工作变得更容易,但在极少数情况下,使用代码构建小部件会更有趣。

也就是说,可以在其他 .ui 文件中导入 .ui 文件,也可以直接通过代码导入通过 .ui 文件创建的组件。我建议使用 Workbench 应用程序通过示例来研究和理解界面创建在 GTK 中的工作原理。

如果您可以分解导致问题的代码部分,则可能会给出不太通用的答案。

© www.soinside.com 2019 - 2024. All rights reserved.