我有一个用 GTK 编写的应用程序,我只是通过 GTK Inspector 进行主题更改。我什至探索了 GitHub 上提供的其他主题。是否可以为我的应用程序的最终用户提供从软件内部更改主题的能力?我知道可以在执行应用程序时为其设置 GTK_THEME 环境变量,并且我还发现可以使用以下方法从代码内更改主题(使用默认的 C 语言绑定):
setenv("GTK_THEME", "Ambiance", 1);
但这仅适用于在运行之前设置此变量的情况。gtk_init().
之后尝试这样做不会成功。是否有任何可能的方法可以允许用户更改主题并使其立即生效(如通过 GTK Inspector 完成的那样)?任何帮助将不胜感激。
好吧,我通过访问 GTK Inspector 源代码来了解他们是如何做到的来回答我自己的问题。我使用 GTK 3.24,所以如果您使用 GTK4(弃用),这看起来会有点不同:
主题名称可以从某处动态分配,我这样做只是为了测试它是否有效。请注意,如果您设置了 GTK_THEME 环境变量,这将不起作用。