Qt Quick系列(2)—核心元素类型(1)

news2024/11/23 15:32:47

作者:CCAccept
专栏:Qt Quick
在这里插入图片描述

文章目录

  • 前言
  • Item
    • Rectangle
    • Text
    • Image
    • MouseArea
  • 总结

前言

Qt Quick的元素分为
1、视觉元素(如Rectangle)具有几何属性
2、非视觉元素(如Timer)提供一般功能,用于控制视觉元素
以下是Qt Quick的一些核心元素类型:

  • Item:所有可视元素的基类,用于表示屏幕上的矩形区域。

  • Rectangle:表示屏幕上的矩形区域,可以设置颜色、边框、圆角等属性。

  • Text:用于在屏幕上显示文本,可以设置字体、颜色、对齐方式等属性。

  • Image:用于在屏幕上显示图像,可以加载本地或远程图像文件。

  • ListView:用于在屏幕上显示列表数据,可以设置模型、委托、滚动条等属性。

  • GridView:用于在屏幕上显示网格数据,可以设置模型、委托、滚动条等属性。

  • TextInput:用于在屏幕上显示单行或多行文本输入框,可以设置占位符、文本格式等属性。

  • Button:用于在屏幕上显示按钮,可以设置文本、图标、颜色等属性。

  • CheckBox:用于在屏幕上显示复选框,可以设置文本、状态等属性。

  • RadioButton:用于在屏幕上显示单选框,可以设置文本、状态等属性。

  • ProgressBar:用于在屏幕上显示进度条,可以设置进度、颜色等属性。

  • Loader:用于在屏幕上动态加载其他QML文件或组件。

这些元素类型是Qt Quick中最常用的元素类型,但Qt Quick还有其他很多元素类型,可以根据需要进行使用。


Item

"Item"是Qt Quick中的一个核心元素类型,它是所有可视元素的基类。在Qt Quick中,所有的可视元素(如矩形、文本、图像等)都是从"Item"派生而来的。

“Item"用于表示屏幕上的矩形区域,虽然不绘制任何东西,但定义了所有视觉元素的共同属性,比如可以设置位置、大小、旋转、缩放、透明度等属性,还提供了键处理变换视觉等功能。它可以作为其他元素类型的容器,用于组合多个元素形成更复杂的界面。例如,可以创建一个"Item”,然后在它内部添加多个"Rectangle"、"Text"等元素,从而形成一个复杂的界面。
在Qt Quick中,所有的元素都是基于"Item"构建的。因此,理解"Item"的概念非常重要,它是构建Qt Quick界面的基石。
在这里插入图片描述
在这里插入图片描述

更多信息在Qt Creator帮助文档中搜索Item


Rectangle

Rectangle也是Qt Quick的核心元素类型之一,它继承自Item,他有很多属性,包含:圆角(radius)渐变色(gradient)抗锯齿(antialiasing默认为true)
来看个代码就知道了,有注释哟👇

//选择合适自己的版本
import QtQuick 2.9
import QtQuick.Window 2.0

Window {
    visible: true
    width: 640
    height: 480
    title: qsTr("Rectangle")
    Rectangle
    {
        id: rec1
        x: 100;y: 50
        width: 70
        height: 90
        //渐变效果
        gradient: Gradient
        {
            //设置关键点(position标记的是y轴上的位置)
            //position:0.0表示最上面(顶部)
            //position:1.0表示最下面(底部)
            GradientStop{position:0.0;color:"green"}
            GradientStop{position:1.0;color:"red"}
        }
        //边缘颜色
        border.color:"slategray"
    }
    Rectangle
    {
        id: rec2
        x: 200;y: 50
        width: 70
        height: 90
        color: "lightsteelblue"
        //圆角效果
        radius:20
        //边缘颜色
        border.color:"slategray"
        //边缘的宽度
        border.width: 4
    }
}

运行效果
在这里插入图片描述

Text

Text是一个常用的核心元素类型,用于显示文本。Text元素可以显示静态文本,也可以显示绑定到模型或属性的动态文本。(绑定语句可以这样设置:text:变量1,当变量1发生改变时,那么text也会自然发生改变)
Text元素有许多属性可以用于控制文本的显示。下面是一些常用的属性:

  • text:用于指定要显示的文本内容。
  • font.family:用于指定字体的名称,如"Arial"。
  • font.pointSize:用于指定字体的大小。
  • font.bold:用于指定文本是否加粗。
  • font.italic:用于指定文本是否斜体。
  • color:用于指定文本的颜色。
  • wrapMode:用于指定文本的换行方式(Text.Wrap、Text.WordWrap、Text.NoWrap等),只有在设置了宽度的情况下才有效。
  • horizontalAlignment:用于指定文本的水平对齐方式(Text.AlignLeft、Text.AlignRight、Text.AlignHCenter等)。
  • verticalAlignment:用于指定文本的垂直对齐方式(Text.AlignTop、Text.AlignBottom、Text.AlignVCenter等)。
  • elide:用于指定文本溢出时的处理方式(Text.ElideNone、Text.ElideLeft、Text.ElideMiddle、Text.ElideRight等),根据宽度将省略符放置在哪里。
  • maximumLineCount:用于指定文本的最大行数。
  • clip:用于指定是否对超出文本区域的部分进行裁剪。
  • style:用于指定文本的样式,如加下划线、删除线等。
  • stylecolor:要和color进行区分,color是文本本身的颜色,而styleColor表示的是style设置样式(比如Sunken凹陷)的颜色
import QtQuick 2.9
import QtQuick.Window 2.0

Window {
    visible: true
    width: 640
    height: 480
    title: qsTr("Text")
    Text
    {
        id:text1
        text:"Hello Qt Quick"

        //设置凹陷效果
        style: Text.Sunken
        //产生效果的颜色
        styleColor: "#000000"
        color: "#FFFFFF"

        //设置字体
        font.family: "宋体"
        //设置大小
        font.pixelSize: 28
    }
    Text
    {
        id:text2
        //将宽度设置为40,而elide也要设置才会使得width有效
        width:40
        //根据宽度将省略符放置在哪里,设置成省略符放到中间
        elide:Text.ElideMiddle
        y:text1.y+text1.height+30
        text:"Hello World"

        //产生效果的颜色
        color: "#303030"
        //设置换行,这个只要一设置就会把elide的设置给屏蔽掉
        wrapMode: Text.WordWrap

        font.italic: true
        font.bold: true
        font.pixelSize: 28
    }
}

运行效果
在这里插入图片描述


Image

Image是一个用于显示图像的核心元素类型。可以使用Image元素来显示静态图像,也可以使用它来显示与模型或属性绑定的动态图像。使用Image元素可以指定图像的路径缩放方式裁剪方式等属性。

  • source:用于指定要显示的图像的路径或URL。
  • fillMode:用于指定图像的缩放方式(Image.Stretch、Image.PreserveAspectFit、Image.PreserveAspectCrop等)
    1、Image.Stretch:图像会被拉伸以填充元素的整个空间,不保持图像原始宽高比。
    2、Image.PreserveAspectFit:图像会按照等比例缩放以适应元素的边界,但不会超出元素的空间,保持图像原始宽高比。图像将居中显示在元素内部。
    3、Image.PreserveAspectCrop:图像会按照等比例缩放以填充元素的整个空间,可能会超出元素的空间,保持图像原始宽高比。如果图像宽高比与元素宽高比不同,则会裁剪掉部分图像。图像将居中显示在元素内部。
    4、Image.Tile:图像将平铺到元素的整个空间中,保持图像原始宽高比。如果图像宽高比与元素宽高比不同,则图像将被拉伸或缩小以适应元素的空间。
  • width:用于指定元素的宽度。
  • height:用于指定元素的高度。
  • smooth:用于指定图像是否平滑缩放。
    上面只是列举了几种常用的,还有很多别的属性,可以通过帮助文档进行检索
import QtQuick 2.9
import QtQuick.Window 2.0
Window {
    visible: true
    width: 640
    height: 480
    title: qsTr("Image")
    Image {
        id:image1
        source: "image1.jpg"
        fillMode: Image.PreserveAspectFit
    }
    Image{
        x:image1.x+image1.width+12
        //宽度设置为原来的一半
        width: image1.width/2
        height:image1.height
        source:"image1.jpg"
    }

    Image{
        y:image1.y+image1.height+12
        width: image1.width/2
        height:image1.height
        //Image.PreserveAspectCrop:图像会按照等比例缩放以填充元素的整个空间,可能裁剪
        fillMode: Image.PreserveAspectCrop
        source:"image1.jpg"
    }

    Image{
        x:image1.x+image1.width+12
        y:image1.y+image1.height+12
        width: image1.width/2
        height:image1.height
        //Image.PreserveAspectFit:保留原来的比例(宽和高之间的比例)自适应大小
        fillMode: Image.PreserveAspectFit
        source:"image1.jpg"
    }
}

运行效果
在这里插入图片描述

MouseArea

MouseArea是一个举行不可见项,可以在其中捕获鼠标事件,这个就比较简单了就直接看代码吧👇

import QtQuick 2.9
import QtQuick.Window 2.0

Window {
    visible: true
    width: 640
    height: 480
    title: qsTr("MouseArea")
    Rectangle
    {
        id: rec1
        x: 200;y: 50
        width: 70
        height: 90
        color: "lightsteelblue"
        MouseArea{
            id:area
            width: parent.width
            height: parent.height
            //点击矩形框rec1内部,矩形框rec2会不可见,再点击又回显形可见
            onClicked: rec2.visible=!rec2.visible
        }
    }
    Rectangle
    {
        id: rec2
        x: 300;y: 50
        width: 70
        height: 90
        color: "lightsteelblue"
        MouseArea{
            id:area1
            width: parent.width
            height: parent.height
            //点击矩形框rec2内部,矩形框rec1会不可见,再点击又回显形可见
            onClicked: rec1.visible=!rec1.visible
        }
    }
}

运行效果
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


总结

这篇文章总结了Item、Rectangle、Text、Image以及MouseArea几大Qt Quick的核心属性,但是核心元素怎么可能就这么点嘞,由于核心元素太多,一篇文章写不下,所以分为多篇文章来写,后续会持续更新本系列,很开心您能够看到这里,希望这篇文章能够对您有所帮助,谢谢!!
在这里插入图片描述

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

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

相关文章

learn C++ NO.5 ——类和对象(3)

日期类的实现 在前面类和对象的学习中,由于知识多比较多和碎,需要一个能够将之前所学知识融会贯通的东西。下面就通过实现日期类来对类和对象已经所学的知识进行巩固。 日期类的基本功能(.h文件) //Date.h//头文件内容 #includ…

makefile 学习(4): makefile基础

0. 官方文档 GNU Make 官方网站: https://www.gnu.org/software/makeGNU Make 官方文档下载地址: https://www.gnu.org/software/make/manual/Makefile Tutorial:https://makefiletutorial.com/ 1.基本要求 1.1 基本格式 targets : prerequisties [tab键] command target : …

一、MongoDB简介

文章目录 一、MongoDB简介1、NoSQL简介2、什么是MongoDB ?3、MongoDB 特点4、安装mongodb5、MongoDB 概念解析5.1 数据库5.2 文档5.3 集合5.4 MongoDB 数据类型 6、适用场景 一、MongoDB简介 1、NoSQL简介 NoSQL(NoSQL Not Only SQL),意即反SQL运动,…

关于在spyder,jupyter notebook下创建虚拟环境(pytorch,tensorflow)均有效

anaconda下载地址 https://www.anaconda.com/download/ 下载完成后打开anaconda目录下的 anaconda prompt 在命令行中输入下面的命令创建一个叫tf2.0的虚拟环境(“tf2.0”是建立的Conda虚拟环境的名字,可以自拟) conda create -n tf2.0 p…

chatgpt赋能Python-pythonfor遍历

Python for 遍历:优雅地遍历数据结构 对于任何编程语言来说,遍历是一项基本操作。而在 Python 中,遍历是一项非常简单和优雅的操作。Python 提供了多种遍历数据结构的方法,包括 for 循环、while 循环、迭代器和生成器等。本文将介…

模板和STL【C++初阶】

目录 一、前言 二、函数模板 三、类模板 四、STL 一、前言 以前我们写swap函数时,对每一种类型的变量都要写一份swap函数,但是他们的格式都是一样的,未免有些麻烦 因此,我们今天学习的模板就可以针对广泛的类型而不是具体的类…

chatgpt赋能Python-pythondir

Python dir命令:探索Python模块的秘密 如果你是一名Python开发者,那么你一定或多或少接触过dir这个命令。但是,你了解dir到底能做什么吗?这篇文章将会介绍dir命令的用途、用法以及一些有趣的技巧。 什么是dir命令 简单来说&…

chatgpt赋能Python-pythonfind

Python文件搜索工具Pythonfind 在开发过程中,文件搜索工具是一个非常重要的工具。在大型项目中,可能需要查找特定类型的文件或者在代码库中查找特定的代码块。 Pythonfind是一个非常强大和灵活的python文件搜索工具,可以帮助我们简化这个过程…

chatgpt赋能Python-pythonforelse

Python For Else 详解:用 Python 的人都应该了解的语法结构 在 Python 中,一个常见的语法结构是 for...else。这种语法结构让循环变得更加直接明了,也让代码更加易读和易懂。 什么是 Python For Else 在 Python 中,for...else …

第13章_约束

第13章_约束 1. 约束(constraint)概述 1.1 为什么需要约束 数据完整性(Data Integrity)是指数据的精确性(Accuracy)和可靠性(Reliability)。它是防止数据库中存在不符合语义规定的数据和防止因错误信息的…

chatgpt赋能Python-pythondataframe转置

Python Dataframe 转置 - 了解 Pandas 中 DataFrame 转置的用法 数据分析是现代业务中的一个关键课题。当您在数据分析中使用 Pandas 时,往往会遇到需要转置 DataFrame 的情况。本文中,我们将介绍如何使用 Python 的 Pandas 库中的 DataFrame 转置来实现…

chatgpt赋能Python-pythondoc

PythonDoc:了解Python的文档工具 什么是PythonDoc? PythonDoc是Python官方文档。它是Python编程语言的权威指南和参考资料,提供丰富而全面的信息,从基础语法到高级主题,都有许多实用和详细的文档说明。 PythonDoc的…

chatgpt赋能Python-pythonddos

PythonDDoS:了解一下这种利用Python语言的攻击方式 PythonDDoS(Python分布式拒绝服务攻击)是一种利用Python语言编写的DDoS攻击技术,它利用了Python的强大处理能力,可以构建高效的攻击工具,让攻击者能够轻…

SpringMVC学习总结(路由映射、参数传递、转发和重定向...)

目录 1. MVC简介 2. SpringMVC简介 3. 路由映射注解 3.1 RequestMapping 3.2 GetMapping与PostMapping 4. 接收前端传递参数 4.1 接收单/多个参数 4.2 接收对象 4.3 接收JSON对象 4.4 后端参数重命名/映射 4.5 设置参数必传/非必传 4.6 获取URL中的参数 4.7 获取文…

学生考勤信息管理系统

系列文章 任务36 学生考勤信息管理系统 文章目录 系列文章一、实践目的与要求1、目的2、要求 二、课题任务三、总体设计1.存储结构及数据类型定义2.程序结构3.所实现的功能函数4、程序流程图 四、小组成员及分工五、 测试操作页面bk.txt信息录入:加入新出勤的信息查…

chatgpt赋能Python-pythonget

PythonGet:一个优秀的Python包管理器 PythonGet是一个优秀的Python包管理器,它可以帮助Python工程师安装、管理和更新Python包。本文将在介绍PythonGet的基本用法的同时,探讨PythonGet在SEO优化中的应用。 PythonGet的简介 PythonGet是Pyt…

不用魔法,快速、手摸手上线Midjourney!【附源码】【示例】

首先来一波感谢: 感谢laf提供赞助,目前可以免费使用Midjourney进行开发和测试。 感谢白夜、米开朗基杨sealos.io的耐心解答,让我对laf有了更多的使用与了解。 什么是laf?来了解下。 文末有【示例】 开始 废话不多说,…

基于Freertos的ESP-IDF开发——7.WS2812B彩色灯循环

基于Freertos的ESP-IDF开发——7.WS2812B彩色灯循环 0. 前言1. WS2812B简介2. 完整代码3. 演示效果4. 其他FreeRtos文章 0. 前言 本节使用WS2812B实现彩灯循环 开发环境:ESP-IDF 4.3 操作系统:Windows10 专业版 开发板:自制的ESP32-WROOM-3…

【软考中级】软件设计师选择题题集(一)

海明校验码是在n个数据位之外增设k个校验位,从而形成一个k+n位的新的码字, 使新的码字的码距比较均匀地拉大。n与k的关系是(1)。 (1)A.2k - 1≥n + k  B.2n - 1≤ n + k   C.n = k  D.n-1≤k 【答案】A 【解析】 【答案】B A 【解析】 在采用结构化方法进行系统分析时,…

MySQL高级篇——索引失效的11种情况

导航: 【黑马Java笔记踩坑汇总】Java基础进阶JavaWebSSMSpringBoot瑞吉外卖SpringCloud黑马旅游谷粒商城学成在线设计模式牛客面试题 目录 1. 索引优化思路 2. 索引失效的11种情况 2.0. 数据准备 2.1 要尽量满足全值匹配 2.2 要满足最佳左前缀法则 2.3 主键插…