rust语言orbtk GUI基础(old2018)-3.orbtk控件简介

orbtk的api在2019.2进行了修改,该文章为2018版
新版请转[新版orbtk gui基础]

orbtk是基于SDL2,完全使用rust写的GUI库,并且在0.3版,也就是现在的版本进行了重写。所以目前支持的控件并不多,主要有:

  • 基础控件
    • TextBlock:显示文本,不可编辑,不可交互
    • TextBox:文本框
    • Button
    • ToggleButton
    • Switch:开关按钮
    • check_box
    • FontIconBlock:显示一个FontIcon
    • ImageWidget:显示图片
    • WaterMarkTextBlock:如果文本为空则显示一个WaterMark占位符
  • 复杂控件
    • ScrollViewer:为局部控件提供横向或竖向的滚动条
    • CanvasWidget:从OrbGl property自定义绘制画布
  • 布局控件
    • Center
    • Row:行控件
    • Column:列控件
    • Spacer:在Row或Column内创建空区域
    • Container:容器,只能有一个子控件,可以使用PaddingLayout定位子控件
    • Stack:子控件在z方向上层叠

还有一个Cursor控件,不太明白什么用途。目前WaterMarkTextBlock实现好像有bug,显示有问题,暂时不推荐用。

事实上orbtk所有的这些控件最终都是自定义了一个Template。控件本身都是Struct。比如Button和Row的定义:

pub struct Button;
pub struct Row;

然后每个控件都实现了Widget Trait,Widget Trait其实也只有一个create方法,create方法创建了一个Template。

impl Widget for Button {
    fn create() -> Template {
    ...
    }

所有控件都通过Template的with_property()函数设置属性。比如我们上节所用的

let text_block=TextBlock::create()
        .with_property(Label::from("Hello, World!"));

text_block最终实际上是生成一个带有Label属性的Template,跟TextBlock类型关系并不大,TextBlock类型的作用主要是在create方法中为Template设置了默认属性值。

所以,自定义orbit控件应该不难。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hustlei

您的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值