ビュー
View::render は、無効化したあと、またはオペレーティングシステムが再描画を求めたときに UI を組み立てます。行が描画をまたいで同一のままになるよう、id を使います。
#ビューの仕組み
render からは impl IntoElement を返します。ウィンドウは invalidate またはプラットフォームのイベントまで休止します。
#条件付きコンテンツ
if self.expanded {
text("Expanded content")
} else {
text("Collapsed")
}分岐を省略すると、そのノードはドロップされます。
#リスト
div().children(self.items.iter().map(|item| {
text(item.name.as_str()).id(item.id)
}))状態を持つ行には、安定した id を付けます。長いコレクションには VirtualList または Table を使います。
#ウィンドウのライフサイクル
それぞれの open_window は独立したビューを所有します。1 つのウィンドウを閉じても、ほかのビューはドロップされません。Dock アイコンは、has_visible_windows が false のときに新しいウィンドウを開いて扱います。
#現在のウィンドウ
fn render(&mut self, cx: &mut ViewContext<'_, Self>) -> impl IntoElement {
let close = cx.listener("close", |_this, cx: &mut EventContext| {
let _ = cx.close_window();
});
button().on_click(close).child("Close")
}#テスト
quickgui check
quickgui testexamples/base_ui_components.rs は UI ギャラリーです。アプリ内インスペクターには、inspector クレート機能を有効にします。
