我正在寻找有关如何包含 GtkImage 的更多信息在 XML UI 文件中,而不是直接从代码创建它们(在 the documentation 中,它只显示了一个从 C 代码创建 GtkImage 的示例,我想从 *.UI 资源执行此操作)。
在 *.UI XML 语法中使用 GtkImage 制作图标或空状态的最佳实践是什么?编辑:尤其是在 Flatpak 的上下文中。
最佳答案
好的,这是我迄今为止的研究。
这取决于您是要从现有图标集中添加图标,还是将您自己的自定义资源/图像添加到您的应用程序中。对于 GTK+3,我们使用相同的类。对于 GTK+4,有人讨论为图标和图像设置单独的类。以下是 GTK+ 3 的说明。
注意:在此示例中,我在 GtkBox container 内添加了 GtkImage 和 GtkLabel ,因为 GtkWindow 只允许一个小部件。
添加预定义图标
查看带有 GTK+3 的图标列表 Icon Library .
以下是取自 Polari's source code 的示例关于如何创建 GTK 图标。
<object class="GtkImage">
<property name="visible">True</property>
<property name="icon-name">open-menu-symbolic</property>
<property name="icon-size">1</property>
</object>
您可以使用icon-size
(4是我们用于GTK+应用程序的默认大小)或pixel-size
(应该是8的乘数)来更改比例、16 或 24)。无论您选择什么,两者都应该可以很好地支持 Hi-DPI。
添加自定义图标或图像(PNG、SVG、JPG 等)
在我们编写 XML 代码之前,此过程首先需要两个额外的步骤。 1. 将图像放入应用程序源代码的 src/文件夹中。
- 将
MyImage.png
注册到 src/中的org.gnome.MyApplication.src.gresource.xml
gressource 文件中。
<?xml version="1.0" encoding="UTF-8"?>
<gresources>
<gresource prefix="/org/gnome/MyApplication">
<file>window.ui</file>
<file>MyImage.png</file>
</gresource>
</gresources>
3.
现在我们可以将 GtkImage
添加到我们的 UI XML 文件中。
<object class="GtkImage">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="resource">/org/gnome/MyApplication/MyImage.png</property>
<property name="icon_size">1</property>
</object>
可以看出,路径由 gresource 前缀
+ 文件名组成。
默认情况下,图像将以 1:1 的比例呈现。
到目前为止,我自己的实验表明,您不能使用 pixel-size
或 icon-size
来控制像这样加载的自定义图像文件的大小。
关于xml - 如何在 GtkBuilder 的 XML *.ui 文件中使用 GTK+3 GtkImage,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57648936/