Derive Macro gtk3_macros::CompositeTemplate [−][src]
#[derive(CompositeTemplate)] { // Attributes available to this derive: #[template] #[template_child] }
Expand description
Derive macro for using a composite template in a widget.
The template
attribute specifies where the template should be loaded
from; it can be a file
, a resource
, or a string
.
The template_child
attribute is used to mark all internal widgets
we need to have programmatic access to.
Example
Specify that MyWidget
is using a composite template and load the
template file the composite_template.ui
file.
ⓘ
use gtk::prelude::*; use gtk::CompositeTemplate; #[derive(Debug, Default, CompositeTemplate)] #[template(file = "composite_template.ui")] struct MyWidget { #[template_child] pub label: TemplateChild<gtk::Label>, }
Then, in the ObjectSubclass
implementation you will need to call
bind_template
in the class_init
function, and init_template
in
instance_init
function.
ⓘ
#[glib::object_subclass] impl ObjectSubclass for MyWidget { const NAME: &'static str = "MyWidget"; type Type = super::MyWidget; type ParentType = gtk::Widget; fn class_init(klass: &mut Self::Class) { Self::bind_template(klass); } fn instance_init(obj: &glib::subclass::InitializingObject<Self>) { obj.init_template(); } }