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: 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)
        }
    }
}

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

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

相关文章

万界星空科技质量管理QMS系统具体功能介绍

一、什么是QMS系统,有什么价值? 1、QMS 系统即质量管理系统(Quality Management System)。 它是一套用于管理和控制企业产品或服务质量的集成化体系。 2、QMS 系统的价值主要体现在以下几个方面: 确保产品质量一致性…

字符串哈希stl解决

题目如下 STL的unordered-set STL的map 谢谢观看!!!

JAVA I/O流练习1

往D盘中的JAVA复习文件夹中写数据: 数据改了一下哈: import java.io.*; import java.util.Scanner; public class Test {public static void main(String[] args) throws IOException {String fileName"D:JAVA复习\\grade.txt";FileWriter w…

英伟达Project Digits赋能医疗大模型:创新应用与未来展望

英伟达Project Digits赋能医疗大模型:创新应用与未来展望 一、引言 1.1 研究背景与意义 在当今数字化时代,医疗行业作为关乎国计民生的关键领域,正面临着前所未有的挑战与机遇。一方面,传统医疗模式在应对海量医疗数据的处理、复…

OpenAI 故障复盘 - 阿里云容器服务与可观测产品如何保障大规模 K8s 集群稳定性

本文作者: 容器服务团队:刘佳旭、冯诗淳 可观测团队:竺夏栋、麻嘉豪、隋吉智 一、前言 Kubernetes(K8s)架构已经是当今 IT 架构的主流与事实标准(CNCF Survey[1])。随着承接的业务规模越来越大,用户也在使…

移动电商的崛起与革新:以开源AI智能名片2+1链动模式S2B2C商城小程序为例的深度剖析

摘要:本文旨在探讨移动电商的崛起背景、特点及其对传统电商模式的革新影响,并以开源AI智能名片21链动模式S2B2C商城小程序为具体案例,深入分析其在移动电商领域的创新实践。随着移动互联网技术的飞速发展,移动电商已成为电商行业的…

el-table 合并单元格

参考文章&#xff1a;vue3.0 el-table 动态合并单元格 - flyComeOn - 博客园 <el-table :data"tableData" border empty-text"暂无数据" :header-cell-style"{ background: #f5f7fa }" class"parent-table" :span-method"obj…

C/C++进阶-函数

C/C入门-函数起始 函数引用与指针函数参数 指针写法 和 数组写法数组的引用右值引用概念&#xff1a;**反汇编&#xff1a;**总结用结构体的示例再理解一遍 函数的本质栈分析栈溢出攻击 函数重载函数重载 进阶 思考函数重载补充 函数模板&#xff08;1&#xff09;&#xff08;…

通俗易懂之线性回归时序预测PyTorch实践

线性回归&#xff08;Linear Regression&#xff09;是机器学习中最基本且广泛应用的算法之一。它不仅作为入门学习的经典案例&#xff0c;也是许多复杂模型的基础。本文将全面介绍线性回归的原理、应用&#xff0c;并通过一段PyTorch代码进行实践演示&#xff0c;帮助读者深入…

分布式主键ID生成方式-snowflake雪花算法

这里写自定义目录标题 一、业务场景二、技术选型1、UUID方案2、Leaf方案-美团&#xff08;基于数据库自增id&#xff09;3、Snowflake雪花算法方案 总结 一、业务场景 大量的业务数据需要保存到数据库中&#xff0c;原来的单库单表的方式扛不住大数据量、高并发&#xff0c;需…

在 C# 中显示动画 GIF 并在运行时更改它们

您可以通过将按钮、图片框、标签或其他控件的Image属性设置为 GIF 文件 来显示动画 GIF 。&#xff08;如果您在窗体的BackgroundImage属性中显示一个&#xff0c;则不会获得动画。&#xff09; 有几种方法可以在运行时更改 GIF。 首先&#xff0c;您可以将 GIF 添加为资源。…

【技术支持】安卓无线adb调试连接方式

Android 10 及更低版本&#xff0c;需要借助 USB 手机和电脑需连接在同一 WiFi 下&#xff1b;手机开启开发者选项和 USB 调试模式&#xff0c;并通过 USB 连接电脑&#xff08;即adb devices可以查看到手机&#xff09;&#xff1b;设置手机的监听adb tcpip 5555;拔掉 USB 线…

【网络】计算机网络的分类 局域网 (LAN) 广域网 (WAN) 城域网 (MAN)个域网(PAN)

局域网是通过路由器接入广域网的 分布范围 局域网Local Area Network&#xff1a;小范围覆盖&#xff0c;速度高&#xff0c;延迟低(办公室&#xff0c;家庭&#xff0c;校园&#xff0c;网络) 广域网Wide Area Network 大范围覆盖&#xff0c;速度相对低&#xff0c;延迟高…

scanf:数据之舟的摆渡人,静卧输入港湾的诗意守候

大家好啊&#xff0c;我是小象٩(๑ω๑)۶ 我的博客&#xff1a;Xiao Xiangζั͡ޓއއ 很高兴见到大家&#xff0c;希望能够和大家一起交流学习&#xff0c;共同进步。* 这一节我们主要来学习scanf的基本用法&#xff0c;了解scanf返回值&#xff0c;懂得scanf占位符和赋值…

win10 gt520+p106双卡测试

安装391.35驱动失败,虽然gpuz和设备管理器显示正常但没有nvidia控制面板 重启进安全模式,ddu卸载,再次重启到安全模式,安装391.01驱动,显示3dvision安装失败,重启再看已经有nvidia控制面板了 修改p106注册表 AdapterType 1 EnableMsHybrid 1 计算机\HKEY_LOCAL_MACHINE\SYSTE…

C# OpenCV机器视觉:霍夫变换

在一个阳光灿烂得近乎放肆的午后&#xff0c;阿强的实验室就像被施了魔法的科学城堡&#xff0c;到处闪耀着神秘的科技光芒。阿强呢&#xff0c;像个即将踏上惊险征程的探险家&#xff0c;一屁股坐在那堆满奇奇怪怪设备的桌前&#xff0c;眼神中透露出按捺不住的兴奋劲儿&#…

【深度学习基础】线性神经网络 | 线性回归的简洁实现

【作者主页】Francek Chen 【专栏介绍】 ⌈ ⌈ ⌈PyTorch深度学习 ⌋ ⌋ ⌋ 深度学习 (DL, Deep Learning) 特指基于深层神经网络模型和方法的机器学习。它是在统计机器学习、人工神经网络等算法模型基础上&#xff0c;结合当代大数据和大算力的发展而发展出来的。深度学习最重…

工业级手持地面站(支持Android和IOS)技术详解!

一、硬件平台的选择 无人机遥控器为了支持Android和iOS系统&#xff0c;通常会选择高性能的处理器和操作系统作为硬件基础。例如&#xff0c;一些高端遥控器可能采用基于ARM架构的高性能处理器&#xff0c;这些处理器能够高效地运行Android或iOS操作系统&#xff0c;并提供足够…

CatLog的使用

一 CatLog的简介 1.1 作用 CAT&#xff08;Central Application Tracking&#xff09; 是基于 Java 开发的实时应用监控平台&#xff0c;为美团点评提供了全面的实时监控告警服务。 1.2 组成部分 1.2.1 Transaction 1.Transaction 适合记录跨越系统边界的程序访问行为&a…

vue elementui 大文件进度条下载

下载进度条 <el-card class"box-card" v-if"downloadProgress > 0"><div>正在下载文件...</div><el-progress :text-inside"true" :stroke-width"26" :percentage"downloadProgress" status"…