QML控件介绍

QML控件介绍

  • 位置和尺寸属性
    • 位置
      • x、y :绝对位置
      • anchors:相对定位属性
      • Layout:布局中定位
  • 按钮
    • Button

位置和尺寸属性

位置

x、y :绝对位置

anchors:相对定位属性

在QML中,anchors 属性是一组用于定义一个元素与其他元素或其父元素之间相对位置关系的属性。这些属性允许开发者通过指定元素的关键位置与其他元素的关键位置之间的对齐来确定界面元素的位置,而不是直接设置元素的具体坐标。anchors 提供了一种灵活且强大的方式来创建响应式和自适应的用户界面。

锚点布局的基本组成部分

每个可视化元素(如 Rectangle, Image 等)都有7条不可见的锚线:左(left)、水平中心(horizontalCenter)、上(top)、下(bottom)、右(right)、垂直中心(verticalCenter)以及基线(baseline)。其中,基线通常对应于文本所在的虚线,对于没有文本的项目而言,默认与顶部相同。

常用的 anchors 属性

  • anchors.left:将元素的左边与另一个元素的右边、左边或其他锚点对齐。
  • anchors.right:将元素的右边与另一个元素的左边、右边或其他锚点对齐。
  • anchors.top:将元素的顶部与另一个元素的底部、顶部或其他锚点对齐。
  • anchors.bottom:将元素的底部与另一个元素的顶部、底部或其他锚点对齐。
  • anchors.horizontalCenter:使元素在其父元素或指定元素的水平中心对齐。
  • anchors.verticalCenter:使元素在其父元素或指定元素的垂直中心对齐。
  • anchors.centerIn:使元素完全居中于另一个元素内部,相当于同时设置了 anchors.horizontalCenteranchors.verticalCenter
  • anchors.fill:让一个元素填充另一个元素的空间,这实际上等同于同时设置了 anchors.left, anchors.right, anchors.top, 和 anchors.bottom
  • anchors.baseline:使元素中的文本基线与其他元素的基线对齐,适用于包含文本的元素。

边距和偏移量

除了上述基本的锚点外,还可以为每个方向上的锚点指定边距(margins),以增加或减少元素边缘与锚点之间的距离。例如:

  • anchors.leftMargin:设置左侧边距。
  • anchors.rightMargin:设置右侧边距。
  • anchors.topMargin:设置顶部边距。
  • anchors.bottomMargin:设置底部边距。
  • anchors.margins:一次性为所有四个方向设置相同的边距值。

此外,还有偏移量属性,用于微调基于中心点的定位:

  • anchors.horizontalCenterOffset:水平中心的偏移量。
  • anchors.verticalCenterOffset:垂直中心的偏移量。
  • anchors.baselineOffset:基线的偏移量。

特殊情况

需要注意的是,当使用 anchors.fillanchors.centerIn 时,它们的优先级比其他六个方向上的锚点描述要高一些。如果存在冲突,则以前者为准。

另外,在某些情况下,你可能需要动态改变锚点,这时可以使用 AnchorChanges 类型,并结合 StateTransition 来实现动画效果。然而,在JavaScript中更改锚点时应当谨慎操作,确保先取消不再需要的锚点再添加新的锚点,以免引起意外行为。

Layout:布局中定位

在QML中,Layout 属性是附加属性,用于提供有关项目在布局管理器中的位置和尺寸的信息。这些属性允许开发者控制项目如何被排列以及它们的大小如何响应父容器的变化。以下是 Layout 属性的主要组成部分及其功能描述:

  1. 对齐方式(Alignment):通过 Layout.alignment 属性指定项目在其占据的空间内的对齐方式。可以设置水平或垂直方向上的对齐,例如 Qt.AlignLeftQt.AlignHCenterQt.AlignRightQt.AlignTopQt.AlignVCenterQt.AlignBottomQt.AlignBaseline

  2. 填充宽度/高度(Fill Width/Height)Layout.fillWidthLayout.fillHeight 布尔属性决定了项目是否应该扩展以填满其可用空间。如果设置为 true,则项目将在遵守给定约束的同时尽可能宽或高。这使得项目能够根据窗口或父容器的大小变化自动调整自身尺寸 。

  3. 最小/最大尺寸(Minimum and Maximum Size):可以通过 Layout.minimumWidthLayout.preferredWidthLayout.maximumWidth(对于宽度)以及对应的 height 属性来定义项目的尺寸限制。这些属性确保了即使当布局试图改变项目的大小时,也不会超出设定的界限 。

  4. 首选尺寸(Preferred Size)Layout.preferredWidthLayout.preferredHeight 属性指定了项目的理想尺寸。如果未明确给出,则布局将使用项目的隐式尺寸(implicitWidthimplicitHeight)。这些属性有助于确定项目在布局中的默认尺寸,并且可以在多个候选属性中优先考虑 。

  5. 边距(Margins)Layout.leftMarginLayout.rightMarginLayout.topMarginLayout.bottomMargin 用来设置项目周围的外部边距。此外,还有一个简化的 Layout.margins 属性可以一次性设置所有四个方向的边距 。

  6. 网格坐标(Grid Coordinates):对于 GridLayout,可以使用 Layout.rowLayout.column 来指定项目所在的行和列。同时,还可以用 Layout.rowSpanLayout.columnSpan 来表示项目跨越多行或多列的情况 。

  7. 间距(Spacing):虽然这不是一个直接的 Layout 属性,但在布局管理器如 RowLayoutColumnLayout 中,可以通过 spacing 属性来控制子项之间的间隔距离。类似地,在 GridLayout 中有 rowSpacingcolumnSpacing 分别用于行间和列间的额外空间 。

  8. 镜像(Mirroring)LayoutMirroring 附加属性允许在水平方向上镜像布局,这对于支持从左到右(LTR)和从右到左(RTL)两种书写系统的应用程序特别有用 。

  9. 自动尺寸(Auto Sizing):当 Layout.fillWidthLayout.fillHeight 设置为 true 时,项目会尝试根据布局分配的空间调整自己的尺寸,而无需显式地绑定 widthheight 属性,避免了与布局管理冲突的风险 。

按钮

Button

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/941342.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

frp内网穿透云服务器。云服务器映射多个家庭局域网内网端口。家庭Windows主机内网运行多个web程序

这篇文章最终要实现的效果是,把云服务器的公网IP绑定到自己本地局域网上的主机一样的效果。相当于局域网主机有了一个自己的公网IP地址。 FRP (Fast Reverse Proxy) 是一个用 Go 语言编写的高性能反向代理应用程序,主要用于内网穿透。它允许位于 NAT 或…

windos 安装docker

文章目录 安装1.下载安装包2.双击安装软件 验证修改国内镜像地址FAQDocker Engine stopped 小结 安装 1.下载安装包 到官网下载适配的安装包:https://www.docker.com/products/docker-desktop/ 2.双击安装软件 选择ok 等待安装依赖 安装完成以后会重启电脑&am…

【已解决】黑马点评项目Redis版本替换过程中误删数据库后前端显示出现的问题

为了实现基于Redis的Stream结构作为消息队列,实现异步秒杀下单的功能,换Redis版本 Redis版本太旧了,所以从3.2.1换成了5.0.14 此时犯了一个大忌,因为新的Redis打开后,没有缓存,不知道出了什么问题&#xf…

Odoo 免费开源 ERP:通过 JavaScript 创建对话框窗口的技术实践分享

作者 | 老杨 出品 | 上海开源智造软件有限公司(OSCG) 概述 在本文中,我们将深入研讨如何于 Odoo 18 中构建 JavaScript(JS)对话框或弹出窗口。对话框乃是展现重要讯息、确认用户操作以及警示用户留意警告或错误的行…

Tool之Excalidraw:Excalidraw(开源的虚拟手绘风格白板)的简介、安装和使用方法、艾米莉应用之详细攻略

Tool之Excalidraw:Excalidraw(开源的虚拟手绘风格白板)的简介、安装和使用方法、艾米莉应用之详细攻略 目录 Excalidraw 简介 1、Excalidraw 的主要特点: Excalidraw 安装和使用方法 1、Excalidraw的安装 T1、使用 npm 安装: T2、使用 …

探索CSDN博客数据:使用Python爬虫技术

探索CSDN博客数据:使用Python爬虫技术 在数字化的浪潮中,数据的获取与分析变得日益关键。CSDN作为中国领先的IT社区和服务平台,汇聚了海量的技术博客与文章,成为一座蕴藏丰富的数据宝库。本文将引领您穿梭于Python的requests和py…

【蓝桥杯选拔赛真题96】Scratch风车旋转 第十五届蓝桥杯scratch图形化编程 少儿编程创意编程选拔赛真题解析

目录 scratch风车旋转 一、题目要求 编程实现 二、案例分析 1、角色分析 2、背景分析 3、前期准备 三、解题思路 1、思路分析 2、详细过程 四、程序编写 五、考点分析 六、推荐资料 1、入门基础 2、蓝桥杯比赛 3、考级资料 4、视频课程 5、python资料 scratc…

LeetCode:222.完全二叉树节点的数量

跟着carl学算法,本系列博客仅做个人记录,建议大家都去看carl本人的博客,写的真的很好的! 代码随想录 LeetCode:222.完全二叉树节点的数量 给你一棵 完全二叉树 的根节点 root ,求出该树的节点个数。 完全二…

CNN和Transfomer介绍

文章目录 CNN和Transfomer介绍CNN和Transfomer的区别1. **基本概念**2. **数据处理方式**3. **模型结构差异**4. **应用场景区别** 自注意力机制1. **自注意力机制的概念**2. **自注意力机制的实现步骤**3. **自注意力机制的优势** Transformer结构组成1. **多头注意力层&#…

【数据结构练习题】栈与队列

栈与队列 选择题括号匹配逆波兰表达式求值出栈入栈次序匹配最小栈设计循环队列面试题1. 用队列实现栈。[OJ链接](https://leetcode.cn/problems/implement-stack-using-queues/solutions/)2. 用栈实现队列。[OJ链接](https://leetcode.cn/problems/implement-queue-using-stack…

python 定时任务管理封装

主逻辑代码 # -*- coding: utf-8 -*- # import apscheduler import pandas as pd from datetime import datetime # 导入调度器,此处使用BackgroundScheduler阻塞调度器 from apscheduler.schedulers.background import BackgroundScheduler # 导入触发器&#xf…

MaxKB基于大语言模型和 RAG的开源知识库问答系统的快速部署教程

1 部署要求 1.1 服务器配置 部署服务器要求: 操作系统:Ubuntu 22.04 / CentOS 7.6 64 位系统CPU/内存:4C/8GB 以上磁盘空间:100GB 1.2 端口要求 在线部署MaxKB需要开通的访问端口说明如下: 端口作用说明22SSH安装…

LCAN-FOBR设备在风力发电项目的消防通讯中的使用

LCAN-FOBR设备在风力发电项目的消防通讯中的使用 在风力发电项目中,所有的风机内部的状态都需要能够在中控室备被监控到,不论是风机的工作状态还是风机内部的消防状态,以便中控室的工作人员都够根据观测到的信息及时的做出反应,避…

Linux扩展——shell编程

前置&#xff1a;Linux基础及命令复习 目录 shell概述Shell脚本入门案例 sh bash ./ . source 变量系统预定义变量 $HOME $PWD $SHELL等自定义变量 unset readonly补充&#xff1a;开启子Shell进程的常见方法 (...) $(...) ... <(...) >(...) 特殊变量 $n $# $* $ $&…

计算机网络-GRE Over IPSec实验

一、概述 前情回顾&#xff1a;上次基于IPsec VPN的主模式进行了基础实验&#xff0c;但是很多高级特性没有涉及&#xff0c;如ike v2、不同传输模式、DPD检测、路由方式引入路由、野蛮模式等等&#xff0c;以后继续学习吧。 前面我们已经学习了GRE可以基于隧道口实现分支互联&…

【运维笔记】向日葵远程:输入法大写无法切换至小写

项目场景&#xff1a; 向日葵&#xff1a;远程客户电脑ubuntu系统 客户电脑&#xff1a;windows 10 &#xff0c;并安装向日葵 服务器&#xff1a;ubuntu系统 问题描述 维护ubuntu时突然无法切换成小写&#xff0c;导致无法运维 原因分析&#xff1a; 大写键被锁住 解决方案…

「Mac畅玩鸿蒙与硬件46」UI互动应用篇23 - 自定义天气预报组件

本篇将带你实现一个自定义天气预报组件。用户可以通过选择不同城市来获取相应的天气信息&#xff0c;页面会显示当前城市的天气图标、温度及天气描述。这一功能适合用于动态展示天气信息的小型应用。 关键词 UI互动应用天气预报数据绑定动态展示状态管理 一、功能说明 自定义…

AAAI-2024 | 大语言模型赋能导航决策!NavGPT:基于大模型显式推理的视觉语言导航

作者&#xff1a;Gengze Zhou, Yicong Hong, Qi Wu 单位&#xff1a;阿德莱德大学&#xff0c;澳大利亚国立大学 论文链接&#xff1a; NavGPT: Explicit Reasoning in Vision-and-Language Navigation with Large Language Models &#xff08;https://ojs.aaai.org/index.p…

react杂乱笔记(一)

程序“npx”无法运行: 找不到应用程序所在位置 行:1 字符: 1 解决方法; 不要在vscode中执行命令,在cmd 中可以执行 Module not found: Error: Cant resolve web-vitals in D:\learn\react-basic\src ERROR in ./src/reportWebVitals.js 5:4-24 Module not found: Error: Cant…

【计算机视觉】opencv-停车位检测原理及代码演示

概述 本文介绍了一种基于OpenCV库的停车场空位检测方法。通过本项目演示&#xff0c;可以对opencv库有更深刻的理解。文章详细阐述了检测原理、算法流程以及代码实现。 一、原理介绍 基于OpenCV的停车位检测原理涉及多个图像处理步骤&#xff0c;以下将结合相关公式详细介绍每…