首页 > 其他分享 >体验下 slint ui (https://slint-ui.com/)

体验下 slint ui (https://slint-ui.com/)

时间:2023-04-22 13:23:03浏览次数:35  
标签:QML 语言 ui slint property com struct

先总结下结论:这个框架目前功能还不完善,但是想法真是挺好的,如果路线不错,将来还是有希望的。

slint-ui是Qt前员工搞出来的一个新的ui,用rust写的,目前支持使用rust/c++/javascipt开发。ui使用了一个新的语言,这个语言很像 QML,描述控件的功能都可以完成,但是复杂的action还得用开发语言来写。重要的是,这个语言最后会直接生成开发语言,一起编译,而不是像QML里的javascript,还需要javascript运行时,所以速度肯定是要快一些的。不好的是,生成的代码不易读懂,基本没法调试。

作为一个有QML开发经验的工程师,用起来感觉比 egui/iced 更简单一些,相比tauri不需要掌握一大堆前端开发的东西。

以下列举下slint ui语言相对QML有哪些改进

  • 支持for,不需要 Repeater,更直白一些
  • 支持if,而不是自己来操作visible
  • 支持percent数据类型,相对父对象的百分数,写起来更简单一些,比如 width: 50%
  • 支持双向绑定<=>
  • property声明时,支持 private,in/out/in-out,意义更明确,也不会意外地用错
  • 支持struct,将数据和ui对象区分开来,意义更明确
  • functioncallback也是静态类型,参数和返回值均为静态类型,编译时可检查很多错误
  • 一个文件中可以声明多个structcomponent,不export的在外面是看不到的,可以更容易保护内部使用的structcomponent,export的时候还可以使用不同的名称
  • 全局单例声明更容易,在开发语言中访问也很方便。
  • property binding的表达式必须pure,避免一些难调试的问题
  • property binding的表达式,依赖项变化时,设置为dirty,但是只在evalute时才更新,我理解是不会立即更新,不像QML中

标签:QML,语言,ui,slint,property,com,struct
From: https://www.cnblogs.com/windtail/p/17342825.html

相关文章

  • 设计模式之[构建者模式(Builder)]-C#
    说明:构建一个大对象时,可以分解成一个部分一个部分的构建,比如一台电脑由CUP、内存、主板、屏幕等,这些配件本身就是一个复杂的制造过程,一个一个构建后然后才组装成一台新的电脑。步骤1、定义要构建的对象——电脑2、定义一个抽象的构建器,内部的每个抽象方法构建一个配件并返回构......
  • 微信小程序:uni-app页面Page和组件Component生命周期执行的先后顺序
    目录H5微信小程序测试代码文档页面生命周期https://uniapp.dcloud.net.cn/tutorial/page.html#lifecycle组件生命周期https://uniapp.dcloud.net.cn/tutorial/page.html#componentlifecycle经测试,得出结论:H5和微信小程序的生命周期函数调用顺序不一致H5pagebeforeCreatepag......
  • 数据对比DataCompare系统设计原理
    1背景介绍在日常数据研发工作中,我们会遇到如下常见场景问题,其一为:数据测试人员要对产出多表的一致性进行检测,其二为:数据对账体系,如资金流和订单数据要保持一致,其三为:数据模型迁移过程中,要对迁移前后的数据进行对比,其四为:数据存储在不同库中,例如A存储到ODPS,B存储到ADB,其中AB库中数据......
  • System.ComponentModel.Win32Exception:拒绝访问
    调试.NETFramework4.6项目,通过创建新进程在程序中调用ProgramFiles下的其他可执行程序,运行报错:System.ComponentModel.Win32Exception:‘拒绝访问’System.ComponentModel.Win32Exception:‘Accessisdenied’ (图片源自客户公开,非实际项目,请勿对号入座。下述截图与该图片非......
  • 【ZeroMQ】zguide 第一章 部分翻译
    为了更好的阅读体验,请点击这里本文大部分内容翻译自Chapter1-Basics,原因是之前翻译的版本太老了,不得不亲自披挂上阵拿机器翻译一下。只截取了部分自己可能用得到的,所以如果有看不太懂的地方,去翻一下原网页吧。QWQ附赠libzmq的api接口函数说明一份。一、基础函数int......
  • The Second Run of Quicksort
    代码#include<iostream>#include<vector>#include<cstdio>usingnamespacestd;constintmaxn=100010;vector<int>sequence;intmaxL,minR,cnt,k,n,tmp;boolbigger[maxn];boolpivot[maxn];intmain(){cin>>k;w......
  • renpyGUI设置界面滑块
    将文件中的条及滑块替换为所需素材此时效果如图可以看到条被纵向拉伸,滑块有方框并不完全透明修改screen.rpy中的styleslider函数,修改xysize与素材分辨率相同添加两个语句:left_gutter10 修改条的左边沟槽thumb_offset5修改滑块和条重叠部分(中文文档如此,不理解为何......
  • com.android.tools.r8.internal.Jc: Absent Code attribute in method that is no
    AbsentCodeattributeinmethodthatisnotnativeorabstract背景:在导入framework.jar时,报错。一般这种问题就是对应的jar包有问题。解决方式:将implementationfiles('libs\\framework.jar')修改为compileOnlyfiles('libs\\framework.jar')作者:黄志成_链接:https://ww......
  • 【四二学堂】基于UiBot RPA开发入门---流程判断
    流程块一:dimaa=1Returna流程块二:TracePrint"a的值等于1时执行的模块"流程块三:TracePrint"a的值不等于1时执行的模块"......
  • 【四二学堂】基于UiBot RPA开发入门---Excel操作
    dimobjExcelWorkBook=""dimiRowsobjExcelWorkBook=Excel.OpenExcel(@res"测试数据一.xlsx",true,"Excel","","")iRows=Excel.GetRowsCount(objExcelWorkBook,"Sheet1")Excel.WriteRow(objExcelWorkBook,&......