Qt应用开发(Quick篇)——矩形模块 Rectangle

一、前言

        矩形模块用于用纯色或渐变填充区域,或者提供一个矩形边框。

二、外观

        每个矩形项都可以使用使用color属性指定的纯填充色、使用gradient类型定义并使用gradient属性设置的渐变来绘制。如果同时指定了颜色渐变效果,则只会生效渐变效果。

        通过设置边框,可以为矩形添加具有自己边框颜色border.color边框厚度border.width

        设置颜色为transparent来绘制没有填充色是一个透明的边框。

        使用radius属性创建圆角矩形。

三、示例

        下面的例子是矩形模块一个基础属性的应用,实现一个带圆角的红色矩形。

import QtQuick 2.15
import QtQuick.Window 2.15
import QtQuick.VirtualKeyboard 2.15Window {id: windowwidth: 640height: 480visible: truetitle: qsTr("Hello World")Rectangle {anchors.centerIn: parentwidth: 100height: 100color: "red"border.color: "black"border.width: 5radius: 10}
}

四、高性能

        使用radius属性创建圆角矩形,由于这会将弯曲的边缘引入矩形的角落,需要设置抗锯齿Item::antialiasing属性用来改善其外观,但是这是牺牲渲染性能为代价来改善圆角矩形的外观。在一些矩形需要运动(动画)的时候,要取消设置此属性,仅在静止时设置该属性。

        下面的实例中,左侧为关闭抗锯齿的圆,右侧为打开抗锯齿的圆。

五:属性介绍

antialiasing : bool

        用于决定矩形是否应该使用抗锯齿,抗锯齿提供了有关此属性的性能影响的信息,默认为true。

border.color : color

border.width : int

        用于绘制矩形边界的宽度和颜色,宽度为1创建一条细线,边框在矩形的边界内呈现,如果不需要线,可以设置宽度为0或者透明。

        注意:如果使用了锚点anchors,则矩形边界的宽度不会影响矩形本身的几何形状或其相对于其他项目的位置,在下图中,提高边界宽度,会使得矩形内的区域变小,而不会影响它和其他模块的距离。

color : color

        该属性表示填充矩形的颜色,默认为白色,如果有设置渐变色的话,会优先使用渐变。

Rectangle {                  anchors.left: parent.leftanchors.leftMargin: 50   anchors.top: parent.top  anchors.topMargin: 100   width: 400               height: 400              color: "#800000FF"       
}                            Rectangle {                  anchors.left: parent.leftanchors.leftMargin: 600  anchors.top: parent.top  anchors.topMargin: 100   width: 400               height: 400              color: "steelblue"       
}                            

gradient : any

        渐变色用来填充整个矩形,此属性允许构造简单的垂直或水平梯度,其他梯度可以通过向矩形添加旋转来形成。

Rectangle {                                                    x: 50;                                                     y: 50;                                                     width: 180;                                                height: 180                                                color: "lightsteelblue"                                    
}                                                              Rectangle {                                                    x: 250;                                                    y: 50;                                                    width: 180;                                                height: 180                                                gradient: Gradient {                                       GradientStop { position: 0.0; color: "lightsteelblue" }GradientStop { position: 1.0; color: "blue" }          }                                                          
}                                                              Rectangle {                                                    x: 450;                                                    y: 50;                                                    width: 180;                                                height: 180                                                rotation: 90                                               gradient: Gradient {                                       GradientStop { position: 0.0; color: "lightsteelblue" }GradientStop { position: 1.0; color: "blue" }          }                                                          
}                                                              

        渐变属性还接受来自QGradient::Preset的梯度预设。但请注意,由于矩形只支持简单的垂直或水平梯度,任何预设与不支持的角度将恢复到最接近的表示。

Rectangle {y: 0; width: 80; height: 80gradient: Gradient.NightFade
}Rectangle {y: 0; width: 80; height: 80gradient: "NightFade"
}

        预设值基于Fresh Background Gradients | WebGradients.com 💎

radius : real

        此属性保存用于绘制圆角矩形的角半径,如果半径不为零,则矩形将被绘制为圆角矩形,否则将被绘制为法向矩形,所有4个角使用相同的半径。

六:拓展-自定义圆角矩形

        radius设置角半径,应用于四个角,目前并没有提供为不同的角指定不同的半径

        但是在实际项目中,如果有需求,就需要我们自定义实现,思路为矩形的叠加,根据自定义参数判断是否显示。

Repeater {                                                           model: [ {                                                       x: 0,                                                    y: 0,                                                    visible: internal.aligns(Qt.AlignLeft | Qt.AlignTop),    radius: root.radius                                      },                                                           {                                                            x: root.width - root.radius,                             y: 0,                                                    visible: internal.aligns(Qt.AlignRight | Qt.AlignTop),   radius: root.radius                                      },                                                           {                                                            x: 0,                                                    y: root.height - root.radius,                            visible: internal.aligns(Qt.AlignLeft | Qt.AlignBottom), radius: root.radius                                      },                                                           {                                                            x: root.width - root.radius,                             y: root.height - root.radius,                            visible: internal.aligns(Qt.AlignRight | Qt.AlignBottom),radius: root.radius                                      } ]                                                          Rectangle {                                                      x: modelData.x; y: modelData.y                               width: modelData.radius;                                     height: width                                                visible: !modelData.visible                                  color: parent.color                                          }                                                                
}                                                                    

完整代码:QtQuick Rectangle 自定义四个方向圆角是否显示

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

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

相关文章

Python:核心知识点整理大全2-笔记

在本章中,你将学习可在Python程序中使用的各种数据,还将学 习如何将数据存储到变量中,以及如何在程序中使用这些变量。 2.1 运行 hello_world.py 时发生的情况 运行hello_world.py时,Python都做了些什么呢?下面来深入…

NFTScan | 11.27~12.03 NFT 市场热点汇总

欢迎来到由 NFT 基础设施 NFTScan 出品的 NFT 生态热点事件每周汇总。 周期:2023.11.20~ 2023.11.26 NFT Hot News 01/ Web3 教育平台 Open Campus 获 Binance Labs 315 万美元投资 11 月 27 日,Binance Labs 已向社区主导的 Web3 教育平台 Open Campu…

Selenium自动化测试工具使用方法汇总

1、设置无头浏览器模式 from selenium import webdriver from selenium.webdriver.chrome.options import Options chrome_options Options() chrome_options.add_argument(- -headless) chrome_options.add_argument(- -disable-gpu) class XX(object): self.driver webdriv…

Python selenium自动化测试模型图解

1、线性测试 优势:每一个脚本都是完整独立的,每一个脚本对应一个测试用例 缺点:开发成本高,会有重复操作重复脚本;维护成本也高,修改重复操作的脚本时,要逐一进行修改。 2、模块化驱动测试 …

三、Zookeeper数据模型

目录 1、Znode兼具文件和目录两种特点 2、Znode具有原子性操作

前端小记--3.接上篇,级联组件el-cascader回显问题

在使用el-cascader这个级联组件时,组件的值是数组形式,且选中节点时,所返回的值中是包含选中节点的所有父节点的。 比如,我们选中的是“值班点1号-东门”,但组件实际的值是[‘值班点1号’,‘值班点1号-东门’]&#x…

[PyTorch][chapter 4][李宏毅深度学习][Gradient Descent]

前言: 目录: 1: 梯度下降原理 2: 常见问题 3: 梯度更新方案 4: 梯度下降限制 一 梯度下降原理 机器学习的目标找到最优的参数,使得Loss 最小 为什么顺着梯度方向loss 就能下降了。主要原理是泰勒公式。 假设损失函数为 忽略二阶导数, 当 …

分享几个电视颜色测试图形卡

介绍 本文分享几个常见的电视颜色测试图形卡和一段matlab程序,完成JPG转FPGA烧写文件,便于把彩色图片预装载到FPGA内。 电视颜色测试图形卡 一种专业检测电视显示效果的工具。它通常由一张卡片和一些色块组成,可以根据标准色彩空间和颜色渐…

语义分割网络FCN

语义分割是一种像素级的分类,输出是与输入图像大小相同的分割图,输出图像的每个像素对应输入图像每个像素的类别,每一个像素点的灰度值都是代表当前像素点属于该类的概率。 语义分割任务需要解决的是如何把定位和分类这两个问题一起解决&…

嘉里大荣物流与极智嘉再度携手,合作助力物流服务高效升级

近日,全球仓储机器人引领者极智嘉(Geek)与3PL知名企业嘉里大荣物流联合宣布,双方再度携手,6周内共建全新自动化订单履行中心,赋能国际时尚运动品牌New Balance加速B2B和B2C订单交付,为其客户提供更高效便捷的物流服务。…

江科大STM32学习笔记(上)

STM32F103xx 前言外设篇GPIO输出GPIO位结构GPIO模式外设的GPIO配置查看实战1: 如何进行基本的GPIO输入输出 OLED显示屏及调试Keil的调试模式演示 EXTI外部中断NVIC基本结构EXTI结构代码实战2:如何使用中断和对射式红外传感器&旋转编码器 TIM&…

【flink番外篇】1、flink的23种常用算子介绍及详细示例(1)- map、flatmap和filter

Flink 系列文章 1、Flink 专栏等系列综合文章链接 文章目录 Flink 系列文章一、Flink的23种算子说明及示例1、maven依赖2、java bean3、map4、flatmap5、Filter 本文主要介绍Flink 的3种常用的operator(map、flatmap和filter)及以具体可运行示例进行说明…

Mysql的索引详解

1.索引的分类 1.按照功能来分,可以分为主键索引、唯一索引、普通索引、全文索引 2.按照索引字段个数来分,可以分为单列索引、联合索引 3.按照物理实现方式来分,可以聚簇索引、非聚簇索引 2.适合添加索引的场景 1.具有唯一性约束的字段。 2…

医药行业:轻松学会超低温冰箱技能

超低温冰箱在医疗、科研和生物领域中扮演着至关重要的角色,用于存储和保护对温度极为敏感的样品和药品。 然而,由于这些冰箱内的温度波动可能导致样品的损坏,因此对超低温冰箱的监控变得至关重要。 客户案例 医疗研究机构 上海某医疗研究机…

YOLOv7独家原创改进:创新自研CPMS注意力,多尺度通道注意力具+多尺度深度可分离卷积空间注意力,全面升级CBAM

💡💡💡本文自研创新改进:自研CPMS, 多尺度通道注意力具+多尺度深度可分离卷积空间注意力,全面升级CBAM 1)作为注意力CPMS使用; 推荐指数:五星 CPMS | 亲测在多个数据集能够实现涨点,对标CBAM。 收录 YOLOv7原创自研 https://blog.csdn.net/m0_63774211/ca…

外包干了4年,技术退步太明显了。。。。。

先说一下自己的情况,本科生生,18年通过校招进入武汉某软件公司,干了接近4年的功能测试,今年国庆,感觉自己不能够在这样下去了,长时间呆在一个舒适的环境会让一个人堕落!而我已经在一个企业干了四年的功能测…

Docker容器(一)概述

一、虚拟化概述 1.1引⼊虚拟化技术的必要性 服务器只有5%的时间是在⼯作的;在其它时间服务器都处于“休眠”状态. 虚拟化前 每台主机⼀个操作系统; 软硬件紧密结合; 在同⼀个主机上运⾏多个应⽤程序通常会遭遇冲突; 系统的资源利⽤率低; 硬件成本⾼昂⽽且不够灵活…

金蝶云星空单据体明细权限和表单插件操作事件的先后顺序

文章目录 金蝶云星空单据体明细权限和表单插件操作事件的先后顺序顺序说明结论 金蝶云星空单据体明细权限和表单插件操作事件的先后顺序 顺序说明 先分录菜单单击事件EntryBarItemClick 再验权 后表单操作执行事件BeforeDoOperation 结论 如果是需要鉴权通过才允许操作的逻辑…

万界星空科技仓库管理wms系统

企业在管理库存时,尤其是生产制造企业,使用传统方式比如纸笔、Excel 管理库存,由于工具和信息化存在局限,导致在管理库存时出现如下问题: 1、通过纸笔记录出入库申请,人为手动计算易出错,数据易…

全球与中国HDPE管道市场:增长趋势、竞争格局与前景展望

快速成长的人口、快速的经济成长和工业发展增加了对可靠供水系统的需求。工业需要为制造流程、冷却系统和卫生目的提供可靠的水供应。随着国家的发展,它们更加重视基础设施,包括供水系统,以支持工业成长。HDPE管道广泛应用于饮用水和灌溉的配…