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

news2025/1/10 17:12:07

上一篇中我们从设计器里可以看到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: 200
    Rectangle {
        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.12
 
Window {
    width: 640
    height: 480
    visible: true
    title: qsTr("Hello World")
 
    MouseArea {
        anchors.fill: parent
        pressAndHoldInterval: 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.coloradmin.cn/o/2274451.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

宇航用VIRTEX5系列FPGA的动态刷新方法及实现

SRAM型FPGA在宇航领域有广泛的应用,为解决FPGA在空间环境中的单粒子翻转问题,增强设计的可靠性,本文介绍一种低成本的抗辐照解决方案。该方案从外置高可靠存储器中读取配置数据,通过定时刷新结合三模冗余的方式消除单粒子影响&…

03.MPLS静态LSP配置实验

MPLS静态LSP配置实验 1、实验环境2、基础配置开启全局mpls接口下开启mpls配置静态LSP配置FEC从1.1.1.1到3.3.3.3配置FEC从3.3.3.3到1.1.1.13、信息查看查看LFIB表(标签转发信息表)查看FIB表(转发信息表)查看详细FFIB表tracert lsp iptracert -vping lsp ip4、抓包验证1、实…

el-table表格合并某一列

需求&#xff1a;按照下图完成单元格合并&#xff0c;数据展示 可以看到科室列是需要合并的 并加背景色展示&#xff1b;具体代码如下&#xff1a; <el-tableref"tableA":data"tableDataList":header-cell-style"{ backgroundColor: #f2dcdb, col…

PostgreSQL学习笔记(二):PostgreSQL基本操作

PostgreSQL 是一个功能强大的开源关系型数据库管理系统 (RDBMS)&#xff0c;支持标准的 SQL 语法&#xff0c;并扩展了许多功能强大的操作语法. 数据类型 数值类型 数据类型描述存储大小示例值SMALLINT小范围整数&#xff0c;范围&#xff1a;-32,768 到 32,7672 字节-123INTE…

javaEE-网络编程4.TCP回显服务器

目录 TCP流套接字编程 一.API介绍 ServerSocket类 构造方法&#xff1a; ​编辑方法&#xff1a; Socket类 构造方法&#xff1a; 方法&#xff1a; 二、TCP连接 三、通过TCP实现回显服务器 TCP服务端&#xff1a; 1.创建Socket对象 2.构造方法 3.start方法 TCP客…

RIS智能无线电反射面:原理、应用与MATLAB代码示例

一、引言 随着无线通信技术的快速发展,人们对通信系统的容量、覆盖范围、能效以及安全性等方面的要求日益提高。传统的无线通信系统主要通过增加基站数量、提高发射功率和优化天线阵列等方式来提升性能,但这些方法面临着资源有限、能耗高和成本上升等挑战。因此,探索新的无线…

合并模型带来的更好性能

研究背景与问题提出 在人工智能领域&#xff0c;当需要处理多个不同任务时&#xff0c;有多种方式来运用模型资源。其中&#xff0c;合并多个微调模型是一种成本效益相对较高的做法&#xff0c;相较于托管多个专门针对不同任务设计的模型&#xff0c;能节省一定成本。然而&…

城市生命线安全综合监管平台

【落地产品&#xff0c;有需要可留言联系&#xff0c;支持项目合作或源码合作】 一、建设背景 以关于城市安全的重要论述为建设纲要&#xff0c;聚焦城市安全重点领域&#xff0c;围绕燃气爆炸、城市内涝、地下管线交互风险、第三方施工破坏、供水爆管、桥梁坍塌、道路塌陷七…

Flink系列知识讲解之:网络监控、指标与反压

Flink系列知识之&#xff1a;网络监控、指标与反压 在上一篇博文中&#xff0c;我们介绍了 Flink 网络协议栈从高层抽象到底层细节的工作原理。本篇博文是网络协议栈系列博文中的第二篇&#xff0c;在此基础上&#xff0c;我们将讨论如何监控网络相关指标&#xff0c;以识别吞…

生物医学信号处理--随机信号的数字特征

前言 概率密度函数完整地表现了随机变量和随机过程的统计性质。但是信号经处理后再求其概率密度函数往往较难&#xff0c;而且往往也并不需要完整地了解随机变量或过程的全部统计性质只要了解其某些特定方面即可。这时就可以引用几个数值来表示该变量或过程在这几方面的特征。…

计算机网络 (31)运输层协议概念

一、概述 从通信和信息处理的角度看&#xff0c;运输层向它上面的应用层提供通信服务&#xff0c;它属于面向通信部分的最高层&#xff0c;同时也是用户功能中的最低层。运输层的一个核心功能是提供从源端主机到目的端主机的可靠的、与实际使用的网络无关的信息传输。它向高层用…

深度学习张量的秩、轴和形状

深度学习张量的秩、轴和形状 秩、轴和形状是在深度学习中我们最关心的张量属性。 秩轴形状 秩、轴和形状是在深度学习中开始使用张量时我们最关心的三个属性。这些概念相互建立&#xff0c;从秩开始&#xff0c;然后是轴&#xff0c;最后构建到形状&#xff0c;所以请注意这…

积分与签到设计

积分 在交互系统中&#xff0c;可以通过看视频、发评论、点赞、签到等操作获取积分&#xff0c;获取的积分又可以参与排行榜、兑换优惠券等&#xff0c;提高用户使用系统的积极性&#xff0c;实现引流。这些功能在很多项目中都很常见&#xff0c;关于功能的实现我的思路如下。 …

vue实现虚拟列表滚动

<template> <div class"cont"> //box 视图区域Y轴滚动 滚动的是box盒子 滚动条显示的也是因为box<div class"box">//itemBox。 一个空白的盒子 计算高度为所有数据的高度 固定每一条数据高度为50px<div class"itemBox" :st…

IEC61850遥控-增强安全选控是什么?

摘要&#xff1a;遥控服务是IEC61850协议中非常重要的一项服务&#xff0c;其通常会被应用在电源开关、指示灯、档位调节等器件的操作。 遥控是一类比较特殊的操作&#xff0c;其通过远程方式操作指定的设备器件&#xff0c;在一些重要的场景中需要有严谨的机制来进行约束&…

【Uniapp-Vue3】创建自定义页面模板

大多数情况下我们都使用的是默认模板&#xff0c;但是默认模板是Vue2格式的&#xff0c;如果我们想要定义一个Vue3模板的页面就需要自定义。 一、我们先复制下面的模板代码&#xff08;可根据自身需要进行修改&#xff09;&#xff1a; <template><view class"…

如何操作github,gitee,gitcode三个git平台建立镜像仓库机制,这样便于维护项目只需要维护一个平台仓库地址的即可-优雅草央千澈

如何操作github&#xff0c;gitee&#xff0c;gitcode三个git平台建立镜像仓库机制&#xff0c;这样便于维护项目只需要维护一个平台仓库地址的即可-优雅草央千澈 问题背景 由于我司最早期19年使用的是gitee&#xff0c;因此大部分仓库都在gitee有几百个库的代码&#xff0c;…

QThread多线程详解

本文结构如下 文章目录 本文结构如下 1.概述2.开始多线程之旅2.1应该把耗时代码放在哪里&#xff1f;2.2再谈moveToThread() 3.启动线程前的准备工作3.1开多少个线程比较合适&#xff1f;3.2设置栈大小 4.启动线程/退出线程4.1启动线程4.2优雅的退出线程 5.操作运行中的线程5.1…

深度学习数据集有没有规范或指导意见,数据集的建立都需要做哪些研究工作?

一、数据集的核心原则是什么&#xff1f; 数据集的目标&#xff1a;它需要回答“你要解决什么问题&#xff1f;” 在构建数据集之前&#xff0c;最重要的不是去采集数据&#xff0c;而是明确目标&#xff1a; 你的模型是要做图像分类&#xff0c;还是目标检测&#xff1f;是要…

前端for循环遍历——foreach、map使用

title: 前端不同类型的for循环遍历——foreach、map date: 2025-01-04 11:02:17 tags: javascript 前端不同类型的for循环遍历 场景&#xff1a;很多时候后端发来的数据是不能够完全契合前端的需求的&#xff0c;比如你要一个数据对象中的值&#xff0c;但是这个值却作为了ke…