如何将UI文件中的GTK4 ApplicationWindow关联到Go程序的GTK应用?
GTK4 + Go GUI开发:ApplicationWindow 关联应用的问题解决
- 接触GTK仅数日,用Go开发GUI时,用Cambalache生成的.UI文件把所有组件都放在
GtkApplicationWindow下,用gtk4-builder-tool验证能正常加载,但Go程序运行后GUI完全无响应。 - 排查后发现需要将UI文件中的
GtkApplicationWindow和Go代码里实例化的GTK应用关联,但Go的GTK绑定里app.AddWindow()只支持GtkWindow类型,无法直接传入GtkApplicationWindow。 - 尝试在UI文件中导出
GtkApplication与GtkApplicationWindow的组合,但用gtk4-builder-tool验证时直接报错。 - 临时解决办法是把UI文件里的
GtkApplicationWindow改成GtkWindow,程序能正常运行,但丢失了GtkApplicationWindow的原生特性(比如和应用生命周期绑定等)。 - 最终找到正确解决方案:不需要用
app.AddWindow(),而是通过appWindow.SetApplication(app)将Go中实例化的应用关联到从UI加载的GtkApplicationWindow上,这样既保留了GtkApplicationWindow的特性,程序也能正常响应。
目前仍不确定是否应该在UI文件中导出GtkApplication对象。
内容的提问来源于stack exchange,提问作者Reg
相关产品推荐
相关产品推荐

