Crate xlui

Crate xlui 

Source
Expand description

xlui是一个Rust的2D GUI库。目标是利用Rust语言原生构建GUI、体积小(最小第三方依赖),简单易用, 在保证性能的前提下尽量减少CPU的开销。

§目前的控件工作状态如下图

控件状态

§下面是xlui的最小运行示例

use xlui::*;

fn main() {
    let app=XlUiApp::new();
    //直接调run()
    // app.run().unwrap();
}

struct XlUiApp {
    status:String,
    count: i32,
}


impl XlUiApp {
    fn new()->XlUiApp{
        XlUiApp{
            count: 0,
            status:"这里是Label".to_string()
        }
    }
    fn add(&mut self,_:&mut Button,ui: &mut Ui){
        self.count += 1;
        self.status=format!("count: {}", self.count);
    }

    fn reduce(&mut self,_:&mut Button,ui: &mut Ui){
        self.count-=1;
        self.status=format!("count: {}", self.count);
    }
}

//实现App trait
impl App for XlUiApp {
    fn draw(&mut self, ui: &mut Ui) {
        ui.add(Label::new("hello").with_id("status"));
        ui.horizontal(|ui| {
            ui.add(Button::new("+").width(30.0).height(30.0).connect(Self::add));
            ui.add(Button::new("-").width(30.0).height(30.0).connect(Self::reduce));
        });
     }

    fn update(&mut self, ui: &mut Ui) {
        let status:&mut Label=ui.get_widget("status").unwrap();
        status.set_text(&self.status);
     }


    fn window_attributes(&self) -> WindowAttribute {
        WindowAttribute{
            inner_size:(800,600).into(),
            ..Default::default()
        }
    }
}
  • xlui可以在App.update中获取Widget的可变引用,以便修改控件
  • update函数是后台接收到系统事件时才会调用,这里不应该直接修改,应根据条件修改。
 use xlui::*;

 fn update(ui:&mut Ui){
    let label:&mut Label=ui.get_widget("my_label").unwrap();
    label.set_text("这里是修改后的文本".to_string());
 }

Modules§

map
response

Macros§

impl_num_cast_ext

Structs§

Border
BorderStyle
Button
Button的示例用法
CheckBox
CheckBox的示例用法
Circle
ClickStyle
Color
颜色
ComboBox
ComboBox的示例用法
Device
DeviceInput
FillStyle
控件样式
Font
HorizontalLayout
水平布局的使用
Image
Image的示例用法
InnerWindow
Label
Label的示例用法
LayoutKind
ListView
ListView的是使用示例
MouseInput
Offset
Padding
###Padding的用法
Popup
Pos
ProcessBar
RadioButton
RadioButton的示例用法
Radius
Rect
Rectangle
Rectangle的示例用法
RecycleLayout
RichText
RichText的示例用法
ScrollWidget
SelectItem
SelectItem的示例用法
Shadow
Size
Slider
Slider的示例用法
SpinBox
Slider的示例用法
TextEdit
Triangle
Ui
VerticalLayout
垂直布局的使用
WindowAttribute

Enums§

Align
TextWrap
UpdateType

Traits§

App
NumCastExt
RichTextExt
Widget

Functions§

gen_unique_id
unique_id_u32