我们正在试用 Gtk3/Vala/Genie 来使用 Gnome-Builder/Meson/Glade/Flatpak 开发应用程序用户界面。Gtk.HeaderBar.pack_start( ... )
虽然在 Vala和其他 Gtk 文档中有很多示例 Gtk.ActionBar.pack_start( ... )
,但我们无法在 xml ui 文件中找到使用示例。
所以问题是:如何将 pack_start/pack_end 与 ui xml 文件一起使用?是否有任何生成的 xml ui 文件的示例或如何在 Glade 中生成?这会作为 HeaderBar/ActionBar 的属性/属性/子项输入吗?这会是什么样子 - 一般结构是什么?如果它不是 a GtkChild
,那么如何在 Vala/Genie 源文件中访问它?
提供以下琐碎的 xml 文件MainApplication.ui
,例如,如何将 onepack_start
和pack_end
aGtkColorButton
提供给GtkHeaderBar
?
<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.20.2 -->
<interface>
<requires lib="gtk+" version="3.20"/>
<template class="MainWindow" parent="GtkApplicationWindow">
<property name="can_focus">False</property>
<property name="default_width">1024</property>
<property name="default_height">768</property>
<child type="titlebar">
<object class="GtkHeaderBar" id="header_bar">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="title">Test Application</property>
<property name="subtitle">gnome.org</property>
<property name="show_close_button">True</property>
</object>
</child>
<child>
<object class="GtkBox" id="content_box">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="orientation">vertical</property>
<child>
<placeholder/>
</child>
<child>
<object class="GtkActionBar" id="action_bar">
<property name="visible">True</property>
<property name="can_focus">False</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
</child>
</template>
</interface>
这在源文件中使用MainApplication.gs
如下:
[GtkTemplate (ui = "/org/gnome/application/ui/MainApplication.ui")]
class MainWindow : Gtk.ApplicationWindow
[GtkChild]
header_bar:Gtk.HeaderBar
[GtkChild]
action_bar:Gtk.ActionBar
construct ( application:Gtk.Application )
GLib.Object( application: application )
class MainApplication:Gtk.Application
construct( id:string, flags:GLib.ApplicationFlags )
/* set locale: ALL, "" */
Intl.setlocale()
/* set properties */
set_application_id( id )
set_flags( flags )