0

我一直在构建小型“原理证明”程序来了解 GTK3,现在 GTK4 的可用性有限,我也一直在尝试了解这个版本。在尝试迁移到 GTK4 时,我采用了我为 GTK3 编写的程序,该程序使用 CSS 提供程序显示两个具有不同属性的进度条,并在 GTK4 下重建它。当我运行 GTK4 版本的程序时,程序中的 CSS 覆盖将被忽略,除非我将 CSS 提供程序上下文引入到进度条之一的显示级别。但这会导致两个进度条都表现出相同的行为,而不是每个进度条都有独特的行为。作为进一步的测试,我为标签小部件添加了 CSS 提供程序和上下文,并且覆盖工作。所以 GTK4 中的一些 CSS 覆盖可以像以前一样工作,但有些则不能。就好像某些 CSS 提供程序覆盖在显示级别被忽略了。查看有关优先级的文档(例如 GTK_STYLE_PROVIDER_PRIORITY_APPLICATION)并测试各种优先级常量并没有什么不同。

在这个叙述中显示代码的内容会太长,所以我已经将 GTK3 和 GTK4 版本的代码上传到我的 Github 存储库以及一个“pdf”文件,直观地说明了 GTK3 和 GTK4 之间的不同行为。如果您想自己查看和测试代码,链接是:

https://github.com/cschuls/GTK4_Mystery

我认为可以使用“id#”属性在显示级别添加特定于小部件的 CSS 自定义,但是当这种做法适用于 GTK3 时,这似乎只会增加不必要的复杂性。提前感谢您的任何答案和建议。

问候,

克雷格

4

0 回答 0