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

Qt Quick 04|QML 四大布局:Row、Column、Grid、Anchor 锚点布局

正文

QML 放弃固定坐标定位,提供四类主流布局,实现界面自适应,窗口缩放自动适配。


一、Column 列布局(垂直排列,自上而下)

子元素垂直排布,对应 QWidget 的QVBoxLayout

qml

Column { anchors.centerIn: parent spacing: 8 // 元素之间间距 Button { text: "按钮1"; width: 100 } Button { text: "按钮2"; width: 100 } Button { text: "按钮3"; width: 100 } }

二、Row 行布局(水平排列,从左到右)

子元素水平排布,对应 QWidget 的QHBoxLayout

qml

Row { anchors.top: parent.top anchors.left: parent.left spacing: 10 Text { text: "账号:" } TextField { width: 120 } }

三、Grid 网格布局(多行多列表格排布)

适合表单、九宫格布局,对应 QWidget 的QGridLayout

核心属性:columns指定列数。

qml

Grid { anchors.centerIn: parent columns: 2 // 固定2列 spacing: 15 Text { text: "姓名:" } TextField { width: 120 } Text { text: "年龄:" } TextField { width: 120 } }

四、Anchor 锚点布局(QML 最强布局,万能定位)

锚点是 QML 特有布局方式,通过上下左右、居中、边距描述元素相对位置,灵活度最高。

1. 基础锚点用法

qml

Rectangle { width: 300 height: 200 color: "#f5f5f5" // 子元素:水平居中、垂直居中 Rectangle { width: 100 height: 60 color: "lightblue" anchors.centerIn: parent } }
2. 单侧锚点 + 边距

qml

Rectangle { // 贴父容器左侧、顶部,距离边距20px anchors.left: parent.left anchors.top: parent.top anchors.leftMargin: 20 anchors.topMargin: 20 }
3. 左右拉伸(填满父容器)

qml

Rectangle { anchors.left: parent.left anchors.right: parent.right anchors.top: parent.top height: 40 }

五、布局选型建议

  1. 简单水平排列 →Row
  2. 简单垂直排列 →Column
  3. 表单、九宫格 →Grid
  4. 复杂不规则界面、精准相对定位 →Anchor 锚点(首选)

小结

Row/Column/Grid 上手简单,适合规整界面;Anchor 灵活强大,是 QML 布局的核心,复杂界面优先使用锚点。

http://www.cnnetsun.cn/news/2867808.html

相关文章:

  • 深度解析Thanos与Alertmanager企业级告警平台架构设计原理
  • Spring Boot项目实战:5分钟搞定国密SM2加解密,附完整Java代码和BouncyCastle依赖
  • AIri容器化部署实战指南:从Docker到Kubernetes的完整解决方案
  • 用Pygame和DQN复刻经典AI实验:手把手教你从零搭建自己的Wumpus世界(Python 3.7环境)
  • 构建高可用微服务架构:云原生环境下AI数字伴侣的部署最佳实践
  • 高效掌控华硕笔记本性能:GHelper完整进阶指南
  • 告别Halcon原生窗口!用C#和ActiViz.NET打造丝滑的三维点云可视化界面(附完整代码)
  • VectorBT参数优化终极指南:如何通过智能调参获得交易优势
  • 私域商业架构:双轨公排矩阵拼团的长效运转机制拆解
  • 三步永久保存微信聊天记录:你的数字记忆守护者
  • 3分钟掌握NCM格式解密:ncmppGui极速转换工具完全指南
  • 心理学考研资料百度网盘|参考书|资料|资料已整理
  • 如何高效实现小红书数据采集与自动化分析:企业级解决方案
  • 别再只用Dice Loss了!PyTorch实战:用Wasserstein Dice Loss搞定医学图像分割中的类别不平衡
  • STM32F103用GPIO中断+状态机驱动EC11编码器,带串口实时输出角度和方向
  • 逆向分析实战:用Unidbg和KeyFinder在Android SO里挖AES密钥(附完整Java代码)
  • 手把手教你为Arduino项目添加天气功能:从申请和风天气Key到TFT屏幕显示
  • 第27篇:实战:产品展示页
  • 保姆级教程:在YOLOv8的哪个位置添加ContextAggregation注意力模块效果最好?
  • 数据治理实战:我是如何用Neo4j搞定字段级血缘关系追溯与影响分析的
  • 终极iOS越狱完全指南:从iOS 17到iOS 26.5最新越狱解决方案
  • 开放词汇关键词识别技术:解决前缀偏差的创新方案
  • Kodi PVR IPTV Simple 终极指南:7天从零到精通的完整教程
  • Java(数组)
  • 护理考研资料百度网盘|参考书|资料|资料已整理
  • 番茄小说下载器:3个技巧让你随时随地畅享离线阅读
  • 终极指南:如何在Mac上制作Windows启动U盘,绕过硬件限制
  • 重新定义语音合成部署范式:为什么MOSS-Audio-Tokenizer-ONNX是边缘计算的游戏规则改变者
  • 如何快速掌握终极计算神器:Qalculate! 智能数学助手完全指南
  • 猫抓浏览器扩展:免费开源的终极多媒体资源嗅探下载工具完整指南