QML学习(八) Quick中的基础组件:Item,Rectangle,MouseArea说明及使用场景和使用方法

上一篇中我们从设计器里可以看到Qt Quick-Base中有几大基础组件,如下图,这篇文章先介绍下Item,Rectangle,MouseArea这三个的说明及使用场景和使用方法
在这里插入图片描述

Item
Item 是 QML 中所有可视元素的基类,是一个非常基础和通用的元素。所以许多 QML 元素都继承了 Item 的属性和行为,形成了一个庞大的可视元素层次结构;
它提供了基本的属性,如 x、y、width、height、opacity、visible 等,可用于布局、定位和显示内容;
可以作为容器元素,将多个子元素组合在一起,方便进行布局管理和组织;
通常用于创建自定义组件,或者作为一个占位元素,可以在其上添加其他的可视元素,如 Rectangle、Text、Image 等;
Item 本身没有窗口的边界和标题栏,它的布局通常是在其父元素的范围内,可能是另一个 Item 或 Window;
其位置和大小通常是相对于父元素的坐标系统,可以使用布局管理器或锚点(anchors)来定位和调整。
Item适合将其作为基础父元素,来构建复杂的用户界面组件和布局,当你需要将多个元素组合在一起形成一个新的可视元素时,Item 是一个很好的选择;
可以用于自定义控件的创建,将多个可视元素封装在一起,实现可复用的组件
像下面这个例子,Item 作为一个容器,包含了一个红色的矩形和一段蓝色的文本:

Item {width: 200; height: 200Rectangle {width: 100; height: 100; color: "red"}Text {text: "Hello, World"; color: "blue"}
}

Item与Window的区别:
Item与Window都可以作为基础父元素,但Window 是一个顶层窗口元素,用于创建应用程序的主窗口或对话框等;
Window 继承自Item,但除了继承 Item 的一些基本属性外,它还有一些专门针对窗口的属性,如 title(窗口标题)、flags(窗口标志,例如窗口是否可最小化、最大化等)、visibility(窗口的可见性)等;
Window提供了一个独立的窗口环境,可以设置窗口的各种属性,包括窗口的大小、位置、模态性等;
当你需要创建一个新的独立窗口,如主应用程序窗口、弹出窗口、对话框等,建议使用 Window;

Rectangle
当你需要绘制一个简单的矩形形状时,Rectangle 是最直接的选择;
可以作为基本的形状元素,用于 UI 界面的构建,如按钮、面板、背景等;
可以使用 Rectangle 来创建装饰性元素,如分割线、边框等,以增强 UI 的视觉效果;
也可以作为容器元素,Rectangle 可以将多个元素组合在一起,方便进行布局和管理。它可以用来创建一个分组的 UI 区域,将相关元素放在一起;
也可作为自定义组件的基础元素,通过添加多个子元素和属性,实现自定义的复杂组件;
例如下面这样:

//作为一个容器元素,包含一个图片和文本
Rectangle1 {width: 250; height: 150; color: "white"border.color: "gray"; border.width: 1;Image {source: "image.jpg";anchors.left: parent.left; anchors.top: parent.top;anchors.margins: 10}Text {text: "This is Image";anchors.left: parent.left; anchors.bottom: parent.bottom;anchors.margins: 10}
}
//作为自定义组件的基础元素使用
Rectangle {width: 300; height: 200; color: "lightgray"property string titleText: "Panel Title"Rectangle {width: parent.width; height: 30; color: "darkgray"Text {text: parent.titleText;anchors.centerIn: parent}}// 更多子元素可以添加在这里
}
//当成一个分割线使用
Rectangle3 {width: parent.width; height: 2; color: "gray"anchors.top: parent.top; anchors.left: parent.left
}

MouseArea
MouseArea 提供一系列触摸事件,它是一个不可见的项目,通常与可见项目组合实现界面交互。
属性
1)mouseX:real
2)mouseY:real
3)enabled:bool
4)pressed:bool
5)propagateComposedEvents:bool
信号
1)clicked(MouseEvent mouse):单击
2)pressed(MouseEvent mouse):按下
3)released(MouseEvent mouse):松开
4)positionChanged(MouseEvent mouse):鼠标移动(x、y)
5)doubleClicked(MouseEvent mouse):双击
6)pressAndHold(MouseEvent mouse):长按,按下达到一定时间才会激发
7)wheel(WheelEvent wheel):滚轮

// 代码示例 1
import QtQuick 2.12
import QtQuick.Window 2.12
import QtQuick.Controls 2.12Window {width: 640height: 480visible: truetitle: qsTr("Hello World")MouseArea {anchors.fill: parentpressAndHoldInterval: 2000  // 按住间隔设置为2s,单位是ms// 按下onPressed: {console.log("按下:onPressed")}// 释放(松开)onReleased: {console.log("释放:onReleased")}// 点击onClicked: {console.log("点击:onClicked")}// 长按onPressAndHold: {console.log("长按:onPressAndHold")}// 双击onDoubleClicked: {console.log("双击:onDoubleClicked")}// 坐标移动onPositionChanged: {console.log(mouseX, mouseY)}}
}

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

设计模式(1)——面向对象和面向过程,封装、继承和多态

文章目录 一、day11. 什么是面向对象2. 面向对象的三要素:继承、封装和多态2.1 封装**2.1.1 封装的概念****2.1.2 如何实现封装****2.1.3 封装的底层实现**2.1.4 为什么使用封装?(好处)**2.1.5 封装只有类能做吗?结构体…

Java到底是值传递还是引用传递????

在搞懂这个问题之前, 我们要首先了解什么是值传递, 什么是引用传递? 值传递: 传递的是数据的副本,修改副本不会影响原始数据。引用传递: 传递的是数据的引用(地址),修改引用会直接影响原始数据. 也就是说,值传递和引…

VLMs之Agent之CogAgent:《CogAgent: A Visual Language Model for GUI Agents》翻译与解读

VLMs之Agent之CogAgent:《CogAgent: A Visual Language Model for GUI Agents》翻译与解读 导读:这篇论文介绍了CogAgent,一个专注于图形用户界面 (GUI) 理解和导航的视觉语言模型 (VLM)。这篇论文提出了一种新的视觉语言模型 CogAgent&#…

23.行号没有了怎么办 滚动条没有了怎么办 C#例子

新建了一个C#项目,发现行号没有了。 想把行号调出来,打开项目,选择工具>选项> 如下图,在文本编辑器的C#里有一个行号,打开就可以了 滚动条在这里:

Element-plus表单总结

表单包含输入框,单选框,下拉选择,多选框等用户输入的组件。输入表单,您可以收集、验证和提交数据。 经典表单 最基础的表单包括各种输入表单项,比如input、select、radio、checkbox等。 在每一个form组件中&#xff0…

在K8S上部署OceanBase的最佳实践

在K8S上部署OceanBase的最佳实践 目录 1. 背景与选型 1.1 为什么选择OB1.2 为什么选择ob-operator实现OB on K8S 2. 部署实操 2.1 环境准备2.2 安装 ob-operator2.3 配置 OB 集群2.4 配置 OBProxy 集群2.5 Headless Service 和 CoreDNS 配置2.6 监控与运维 2.6.1 Promethues部…

关于FPGA中添加FIR IP核(采用了GOWIN EDA)

文章目录 前言一、IP核二、MATLAB文件三、导出系数COE文件1.设计滤波器2.用官方的matlab代码或者直接用文本文件 四、进行模块化设计源文件 前言 FIR滤波器的特点是其输出信号是输入信号的加权和,权值由滤波器的系数决定。每个系数代表了滤波器在特定延迟位置上的“…

部署:上传项目代码 配置数据库

一、上传代码 1、使用git 可以使用Git Clone。使用前,在服务器上也要创建秘钥对。这里的密钥对,是专门用来读取Git仓库的。 在宝塔上,点击终端。进来后,运行 ssh-keygen还是一路回车,密钥对就建好了。 接着用命令…

【竞技宝】CS2:HLTV2024职业选手排名TOP8-broky

北京时间2025年1月7日,HLTV年度选手排名正在持续公布中,今日凌晨正式公布了今年的TOP8为FAZE战队的broky。 选手简介 broky是一位来自拉脱维亚的职业CS选手,现年23岁。2018年7月,broky获得了FPL资格,连续几季在榜上前5。他的首次赛场留名是跟随拉脱维亚本土战队Wolsung出征BES…

英伟达 RTX 5090 显卡赋能医疗大模型:变革、挑战与展望

一、英伟达 RTX 5090 与 RTX 4090 技术参数对比 1.1 核心架构与制程工艺 在探讨英伟达 RTX 4090 与 RTX 5090 的差异时,核心架构与制程工艺无疑是最为关键的基础要素,它们从根本上决定了两款显卡的性能上限与应用潜力。 1.1.1 核心架构差异 RTX 4090…

【Cesium】自定义材质,添加带有方向的滚动路线

【Cesium】自定义材质,添加带有方向的滚动路线 🍖 前言🎶一、实现过程✨二、代码展示🏀三、运行结果🏆四、知识点提示 🍖 前言 【Cesium】自定义材质,添加带有方向的滚动路线 🎶一、…

unity学习12:地图相关的一些基础2, 增加layer种草种树

目录 参考学习 1 地图设置 1.1 上次制作的地图,稍微加点地形完善下. 1.2 调整下camera 1.3 摄像机camera的移动速度 1.4 地图属性,terrain settings 1.5 但是,地图看起来像沙漠一样,很单调 2 paint terrain / paint textu…

游戏引擎学习第77天

仓库: https://gitee.com/mrxiao_com/2d_game 回顾昨天的 bug 今天我们继续开发进度,进行调试昨天代码的问题,主要是关于如何跟踪玩家和敌人在世界中的高度位置。虽然我们做的是一款 2D 游戏,但我们希望能够处理多层的房间,玩家…

【微服务】7、分布式事务

在分布系统中,一个业务由多个服务合作完成,每个服务有自己的事务,多个事务需同时成功或失败,这样的事务称为分布式事务。 其中每个服务的事务叫分支事务,整个业务的统一事务叫全局事务。 分布式事务相关知识讲解 课程引…

【pyqt】(四)Designer布局

布局 之前我们利用鼠标拖动的控件的时候,发现一些部件很难完成对齐这些工作,pyqt为我们提供的多种布局功能不仅可以让排版更加美观,还能够让界面自适应窗口大小的变化,使得布局美观合理。最常使用的三种布局就是垂直河子布局、水…

30天开发操作系统 第 12 天 -- 定时器

前言 定时器(Timer)对于操作系统非常重要。它在原理上却很简单,只是每隔一段时间(比如0.01秒)就发送一个中断信号给CPU。幸亏有了定时器,CPU才不用辛苦地去计量时间。……如果没有定时器会怎么样呢?让我们想象一下吧。 假如CPU看不到定时器而仍想计量时…

大数据-268 实时数仓 - ODS层 将 Kafka 中的维度表写入 DIM

点一下关注吧!!!非常感谢!!持续更新!!! Java篇开始了! MyBatis 更新完毕目前开始更新 Spring,一起深入浅出! 目前已经更新到了: H…

算法5--位运算

目录 基础经典例题[面试题 01.01. 判定字符是否唯一](https://leetcode.cn/problems/is-unique-lcci/description/)[268. 丢失的数字](https://leetcode.cn/problems/missing-number/description/)[371. 两整数之和](https://leetcode.cn/problems/sum-of-two-integers/descrip…

基于STM32设计的仓库环境监测与预警系统

目录 项目开发背景设计实现的功能项目硬件模块组成设计思路系统功能总结使用的模块的技术详情介绍总结 1. 项目开发背景 随着工业化和现代化的进程,尤其是在制造业、食品业、医药业等行业,仓库环境的监控和管理成为了至关重要的一环。尤其是在存储易腐…

代码随想录day38 动态规划6

题目:322.零钱兑换 279.完全平方数 139.单词拆分 多重背包 背包总结 需要重做:322,139 322. 零钱兑换 思路:零钱,可取多次-》完全背包。 注意: 五部: 1.dp[j]:价值为j的时候,最…