Как работает GtkRevealer?
Как я понял это аналог gtk_widget_hide и gtk_widget_show, только скрывает или показывает он виджет с анимацией.
У меня есть виджет GtkRevealer в котором находится кнопка, с помощью функции gtk_revealer_set_reveal_child(GTK_REVEALER(Revealer),FALSE); я пытаюсь скрыть виджет, но ничего не выходит, что я не понял?
Ответы (2 шт):
Как работает GtkRevealer
Пример:
extern crate gtk;
use gtk::*;
fn main() {
if gtk::init().is_err() {
eprintln!("failed to initialize GTK Application");
std::process::exit(1);
}
let window = Window::new(WindowType::Toplevel);
window.set_default_size(400, 200);
let header = HeaderBar::new();
header.set_show_close_button(true);
header.set_title("App");
window.set_titlebar(&header);
let vbox = Box::new(Orientation::Vertical, 0);
window.add(&vbox);
let revealer = Revealer::new();
revealer.set_transition_type(RevealerTransitionType::SlideRight);
revealer.set_transition_duration(2000);
let label_1 = Label::new("Test label");
revealer.add(&label_1);
let btn = Button::new_with_label("Show/Hide");
let revealer_1 = revealer.clone();
btn.connect_clicked(move |_| {
let cur = revealer_1.get_reveal_child();
println!("{:?}", cur);
revealer_1.set_reveal_child(!cur);
});
vbox.pack_start(&btn, true, true, 0);
vbox.pack_end(&revealer, true, true, 0);
window.show_all();
gtk::main();
}
GtkRevealer это контейнер который может содержать одного потомка и скрывать его или отображать с анимацией.
метод gtk_revealer_set_reveal_child() скрывает или отображает потомка.
Но вначале нужно настроить как должен быть анимирована переход с использованем метода
gtk_revealer_set_transition_type()
также в Theming in GTK должна быть настроена анимация при переходе
также должна быть открыта анимация в GtkSettings свойство gtk-enable-animations
эти свойства устанавливаются через метод
g_object_set(gtk_object, "gtk-enable-animation", 1, NULL);
