news 2026/4/16 14:15:11

QML布局相关-盒子模型

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
QML布局相关-盒子模型

在 QML(Qt Modeling Language)中,布局相关的几个常见术语包括 margin、spacing、padding 和 border。这些术语主要出现在使用 Qt Quick Controls 或 Qt Quick Layouts 模块进行界面设计时。下面分别解释它们的含义和用途:

🔹 1. Margin(外边距)

含义:Margin 表示控件外部与其父容器或其他相邻控件之间的空间。它控制一个元素与其他元素之间的“外部”距离。

类比 CSS:类似于 CSS 中的 margin。

QML 示例:
Rectangle {
width: 200; height: 100
color: “lightblue”
anchors.centerIn: parent
anchors.margins: 20 // 控件离父窗口边界的距离为20
}

或者在使用 Layout 时:
RowLayout {
anchors.fill: parent
spacing: 10
Rectangle {
Layout.fillWidth: true
Layout.leftMargin: 10 // 左边距为10
Layout.rightMargin: 20 // 右边距为20
height: 50
color: “red”
}
}

🔹 2. Spacing(间距)

含义:Spacing 用于布局内部多个子项之间保持一致的间隔。它是在像 RowLayout、ColumnLayout、GridLayout 等布局中使用的。

类比 CSS:类似 CSS Flexbox 的 gap 属性或 margin 的组合效果。

QML 示例:
RowLayout {
width: parent.width
spacing: 15 // 每个子控件之间保持15像素的距离
Rectangle { Layout.preferredWidth: 50; height: 50; color: “red” }
Rectangle { Layout.preferredWidth: 50; height: 50; color: “green” }
Rectangle { Layout.preferredWidth: 50; height: 50; color: “blue” }
}

🔹 3. Padding(内边距)

含义:Padding 表示控件内部内容与控件边框之间的空间。它影响的是控件内部元素的布局位置,比如 Text 在 Rectangle 内的位置。

注意:QML 原生控件不直接提供 padding 属性,但某些容器如 Item, Control, ScrollView 等通过 padding 属性支持;也可以通过 Item 的 topPadding、leftPadding 等属性设置。

类比 CSS:相当于 CSS 的 padding。

QML 示例:
Button {
text: “Click Me”
padding: 10 // 文本与按钮边缘之间的距离为10
}

或者在容器中:
Item {
padding: 10
Text {
text: “Hello”
}
}

🔹 4. Border(边框)

含义:Border 表示控件的边界线条,通常用于装饰或突出显示控件区域。它包括边框宽度、颜色、样式等。

QML 示例:
Rectangle {
width: 100; height: 50
color: “yellow”
border.width: 2
border.color: “black”
}

还可以使用 radius 设置圆角:
Rectangle {
width: 100; height: 50
radius: 10
border.width: 1
border.color: “gray”
}

✅ 总结对比表:

名称 含义 类比 CSS QML 示例

Margin 控件与外部元素之间的空白 margin anchors.margins, Layout.leftMargin

Spacing 布局中多个子控件之间的间隔 gap / margin RowLayout { spacing: 10 }

Padding 控件内容与控件边框之间的空白 padding padding: 10, topPadding 等

Border 控件边框的宽度、颜色和样式 border border.width, border.color

如需进一步了解 QML 布局系统,可以参考官方文档:

🔗 https://doc.qt.io/qt-6/qtquicklayouts-index.html
🔗 https://doc.qt.io/qt-6/qml-qtquick-controls2-control.html

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/16 12:25:55

QML中关联C++ Model 类的两种核心方式

QML 中关联 C Model 类的两种核心方式:import 和 setContextProperty。 这两种方式的本质区别在于 Model 的提供者和作用域。 方式一:注册为 QML 类型并 Import 使用 这种方式是将 C 类注册到 QML 类型系统中,使其在 QML 中像一个内置类型一样…

作者头像 李华
网站建设 2026/4/16 4:53:28

Python软件工具有哪些?

Python生态的强大,离不开丰富且高效的软件工具加持,它们覆盖开发、调试、数据分析、自动化等全场景,选对工具能让效率翻倍。那么Python软件工具有哪些?请看下文。 Python开发涉及多种软件工具,主要包括集成开发环境、代码编辑器、…

作者头像 李华
网站建设 2026/4/16 13:04:38

智能排版新时代:2025年6款论文工具精准适配LaTeX学术规范

2025 热门 AI 论文工具哪个好?6 款适配 LaTeX 模板与论文格式规范六款热门 AI 论文工具对比总结以下是2025年热门AI论文工具的快速对比,帮助您在写作论文时选择合适工具。这六款工具均支持LaTeX模板和论文格式规范,适配性强。总结基于核心功能…

作者头像 李华
网站建设 2026/4/16 13:02:00

一文带你彻底搞懂 Python 编程进阶之闭包

什么是闭包:在函数嵌套的情况下,内部的函数使用外部函数中的变量,并且外部函数返回了内部函数,我们将这个内部函数称之为闭包。 闭包是实现装饰器的基础,通过装饰器可以在不修改原函数代码的情况下增强其功能。 在Py…

作者头像 李华
网站建设 2026/4/16 13:02:14

大模型时代,人类如何守住不可替代性并抓住新机遇

本文探讨了在大模型时代如何避免被AI替代的两大策略:一是守住人类独有的情感与创造力,这些是AI无法复制的核心价值;二是拥抱AI带来的新机遇,如AI大模型应用开发工程师和训练师等高薪岗位。文章强调AI是人类战友而非对手&#xff0…

作者头像 李华
网站建设 2026/4/16 12:14:53

大模型部署完全指南:从网页版到私有化,一篇搞定!建议收藏学习

文章详细介绍了大模型的四种使用方式和部署方案:网页版、API接口调用、企业专属大模型训练和私有化部署,并分析了各自的适用场景。文章强调,私有化部署虽然理想,但成本高昂、更新困难、技术门槛高,除非有强科研或数据安…

作者头像 李华