当前位置: 首页 > news >正文

Slint GridLayout 详解:从基础到实战的网格布局指南

Slint GridLayout 详解:从基础到实战的网格布局指南

  • 一、Slint GridLayout 详解
    • 1、📌 核心概念
    • 2、🧩 子元素放置
    • 3、⚙️ 响应式逻辑
    • 4、🧾属性详解
  • 二、代码示例
    • 1、示例代码
    • 2、效果展示

一、Slint GridLayout 详解

1、📌 核心概念

GridLayout是用于创建二维网格布局的容器组件,对标 HTML 中的 CSS Grid。它通过以下方式定义布局结构:

GridLayout { spacing: 5px; Row { Rectangle { background: red; } Rectangle { background: blue; } } Row { Rectangle { background: yellow; } Rectangle { background: green; } } }

2、🧩 子元素放置

通过colandrow属性控制子元素在网格中的位置:

export component Foo inherits Window { width: 200px; height: 150px; GridLayout { Rectangle { background: red; } Rectangle { background: blue; } Rectangle { background: yellow; row: 1; } Rectangle { background: green; } Rectangle { background: black; col: 2; row: 0; } } }

涉及的属性参数:

  • rowspan/colspan:跨越的行数/列数
  • col/row:旧版兼容写法(建议用新语法)

3、⚙️ 响应式逻辑

网格尺寸自适应规则:
实际宽度 = 列权重 ∑ 所有权重 × 容器总宽度 \text{实际宽度} = \frac{\text{列权重}}{\sum \text{所有权重}} \times \text{容器总宽度}实际宽度=所有权重列权重×容器总宽度

4、🧾属性详解

属性详解
spacing布局中元素之间的距离。此单一值同时应用于水平和垂直间距。
spacing-horizontal水平间距
spacing-vertical垂直间距
padding网格结构周围的填充作为一个整体。此单个值应用于所有边。
padding-left左边距
padding-right右边距
padding-top顶边距
padding-bottom底边距
row该元素在网格中的行索引。除非已明确设置,否则设置此属性会将该元素的列重置为零。
col元素在网格中的列索引。设置此属性可覆盖顺序列分配(例如,跳过某一列)。
rowspan此元素应跨越的行数。
colspan此元素应跨越的列数。

二、代码示例

1、示例代码

import{AboutSlint,VerticalBox,LineEdit,HorizontalBox,Button,GroupBox,GridBox,ComboBox,Spinner,Slider,ListView,Palette,ProgressIndicator,CheckBox,Switch,StandardTableView,SpinBox}from"std-widgets.slint";export component GridDemo inherits Window{title:"Slint GridLayout 完整示例";width:800px;height:600px;// 主网格布局:3列 + 自动行,演示核心特性main-grid:=GridLayout{// ========== 1. 全局间距 & 内边距 ==========spacing:8px;// 单元格之间间距padding:10px;// 布局整体内边距// ========== 第1行:普通单元格(默认填满) ==========Rectangle{background:#e6f7ff;Text{text:"单元格 (1,1)";}}Rectangle{background:#f0f8ff;Text{text:"单元格 (1,2)";}}Rectangle{background:#f5fafe;Text{text:"单元格 (1,3)";}}// ========== 第2行:跨行 / 跨列 (核心特性) ==========Rectangle{background:#ffeaa7;colspan:2;// 横跨 2 列Text{text:"colspan=2 跨两列";}}Rectangle{background:#dfe6e9;rowspan:2;// 纵跨 2 行Text{text:"rowspan=2 跨两行";}}// ========== 第3行:承接上一行跨行位置 ==========Rectangle{background:#81ecec;Text{text:"单元格 (3,1)";}}Rectangle{background:#74b9ff;Text{text:"单元格 (3,2)";}}// ========== 第4行:对齐方式 + 最小尺寸 ==========Rectangle{background:#a29bfe;min-width:80px;min-height:40px;// 内部水平/垂直对齐Text{text:"左上对齐";horizontal-alignment:start;vertical-alignment:top;}}Rectangle{background:#fd79a8;Text{text:"居中对齐";horizontal-alignment:center;vertical-alignment:center;}}Rectangle{background:#00b894;Text{text:"右下对齐";horizontal-alignment:end;vertical-alignment:bottom;}}// ========== 第5行:混合原生控件 + 拉伸权重 ==========// row/column 权重:控制单元格拉伸比例Row{GridLayout{spacing:4px;Button{text:"按钮1";}CheckBox{text:"选项";}SpinBox{value:50;}}}}}

2、效果展示

http://www.jsqmd.com/news/1128930/

相关文章:

  • Python之anydo-api包语法、参数和实际应用案例
  • 20万以内的领克07GT是否值得购买呢咋们来聊聊领克07GT这台车
  • 第四届链博会首次设立 AI 专区,676 家企业参展——AI 不再只是前沿科技了
  • Codex App 26.616 新功能教程:Record Replay 录制与回放使用指南
  • 千问文档怎么导出?AI 导出鸭一站式搞定多格式导出难题
  • 题解:洛谷 AT_abc463_a [ABC463A] 16:9
  • (论文速读)REF-DDPM:一种新的基于DDPM的不平衡滚动轴承故障诊断数据增强方法
  • 【研发类-前端开发Skills】angular-ui-patterns 技能
  • 西安军工拉力机优质品牌怎么选?力学测试合规不能马虎
  • 企业级FastAPI后端模板搭建(五)初始化数据
  • FinalBurn Neo完整指南:打造完美街机游戏模拟体验的终极教程
  • AI 导出鸭实操教程:怎么把 Grok 生成的表格导出,零基础快速搞定表格转存
  • 2026 AI 开发者生存指南(8):AI 视频、音乐、图像生成工具链——从文本生成到商业化应用
  • [MAF工作流框架揭秘-10]基于Open-Telemetry的调用链跟踪
  • 三星固件下载终极指南:为什么Bifrost是你的最佳选择?
  • 零基础可视化看板搭建:从交互到下钻全流程
  • Java 全套基础体系博客终篇|全系列内容完整复盘 + 学习路线收尾总结
  • AI 应用的多模型路由策略:怎么用最少的钱调用最合适的模型?
  • CloudSSH 开源项目:借助 Cloudflare Workers 打造免费 Web SSH 终端,用浏览器丝滑远程服务器,连接信息云端同步,一键部署还不花一分钱
  • 面试口述版:个人对 Prometheus 完整理解
  • 智谱 GLM-5.2 凌晨上新,Code Arena 全球第一意味着什么?
  • AI 导出鸭实操教程:ChatGPT 数学公式如何正确粘贴,文档导出转换一步到位
  • C语言 用递归实现revserse_string详解(附有画图)
  • 阴极发光在 SEM 分析中的应用
  • AI 全栈开发实战(8):前端开发(二)——流式对话界面与 Markdown 渲染
  • vue3 错误记录
  • AI果蔬清洗分拣工段智能控制系统
  • CSUR:城市天际线道路系统的终极解决方案,告别单调道路设计
  • 2026年渗透测试实战工具链:从信息收集到权限维持的完整作战手册
  • AI 导出鸭实操指南:智谱清言生成 word 文档指令落地使用技巧