【QML】StackView上层页面半透明,显示下层页面

1、 应用场景

有时候需要模拟弹窗效果,需要下层的页面半透明显示。仅仅将上层页面背景设置为透明并不能实现这个效果,下层的页面依然被覆盖。Qt帮助文档中有如下代码,经测试有效果。

2、 代码

重点标记:

  • 下层页面需要设置这个属性StackView.visible: true
  • 设置后有个问题:如果此页面有可点击的组件,被放到下层后依然可以被点击,这不是我们想要的。
  • 解决思路是当页面被放入下层后用一个MouseArea覆盖。
import QtQuick 2.15
import QtQuick.Window 2.15
import QtQuick.Controls 2.15Window {width: 1000height: 600visible: truetitle: qsTr("Hello World")Component {id: pageRectangle {property real pos: StackView.index * stackView.offsetproperty real hue: Math.random()color: Qt.hsla(hue, 0.5, 0.8, 0.6)border.color: Qt.hsla(hue, 0.5, 0.5, 0.9)StackView.visible: true	//重点Text{text: stackView.depth}//防止在下层时被点击MouseArea{id: _mMaskTouchanchors.fill: parentz: 99}onFocusChanged: {_mMaskTouch.enabled = !focus}}}StackView {id: stackViewproperty real offset: 10width: 100; height: 100initialItem:pagepushEnter: Transition {id: pushEnterParallelAnimation {PropertyAction { property: "x"; value: pushEnter.ViewTransition.item.pos }NumberAnimation { properties: "y"; from: pushEnter.ViewTransition.item.pos + stackView.offset; to: pushEnter.ViewTransition.item.pos; duration: 400; easing.type: Easing.OutCubic }NumberAnimation { property: "opacity"; from: 0; to: 1; duration: 400; easing.type: Easing.OutCubic }}}popExit: Transition {id: popExitParallelAnimation {PropertyAction { property: "x"; value: popExit.ViewTransition.item.pos }NumberAnimation { properties: "y"; from: popExit.ViewTransition.item.pos; to: popExit.ViewTransition.item.pos + stackView.offset; duration: 400; easing.type: Easing.OutCubic }NumberAnimation { property: "opacity"; from: 1; to: 0; duration: 400; easing.type: Easing.OutCubic }}}pushExit: Transition {id: pushExitPropertyAction { property: "x"; value: pushExit.ViewTransition.item.pos }PropertyAction { property: "y"; value: pushExit.ViewTransition.item.pos }}popEnter: Transition {id: popEnterPropertyAction { property: "x"; value: popEnter.ViewTransition.item.pos }PropertyAction { property: "y"; value: popEnter.ViewTransition.item.pos }}}Button{text: "push"width: 100height: 100x: 300onClicked: {stackView.push(page)}}Button{text: "pop"width: 100height: 100x: 300y: 200onClicked: {stackView.pop()}}
}

3、测试效果

在这里插入图片描述

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

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

相关文章

C#winfrom端屏幕截图功能的简单实现(修改了屏幕的缩放比例后,截图功能异常,慎用!!!)

文章目录 1 主要文件1.1 FrmScreenShot.cs1.2 FrmScreenShot.Designer.cs1.1 Utility.cs 在发现有一款播放软件禁止截图功能后,使用了其他的截图工具发现都会被播放软件禁用掉截图功能,想了下试着自己做一个截图工具,也可以方便将截图工具添加…

【VRTK】【VR开发】【Unity】8-可交互对象

【概述】 之前我们只是用了一个简单方块作为可交互对象。其实可交互对象可以有许多细节设置,包括具体抓握物体的哪个点,指定抓握的方向,指定Secondary Action允许两手互换抓握,双手抓握,用两手改变物体大小等。 【拾取物体】 要让一个物体能够被拾取,必须设置它为可互…

诊断0x27服务解密文件DLL制作与使用

DLL文件在CANoe的使用方法 DLL文件在诊断里面可以用在0x27秘钥服务里面,对解密有帮助,在下图位置加载。 DLL文件制作 vector公司本来就给了我们一个demo,先拷贝一份下来,别把原来的文件给改坏了。我这个是CANoe12,de…

35的程序员被辞了可以自己接外包啊?为什么都那么悲观呢?

35的年纪,上有老下有小,即将步入中年危机,在这个节骨眼上被辞,能不悲观吗? 在这个年纪人们往往追求的是稳定的工作和生活,而进入一个自己不熟悉的行业并不是一个好的选择。 况且,你认为的外包…

PHP众筹系统源码+支持报名众筹+商品众筹+无偿众筹+市面上所有的众筹模式 附带完整的搭建教程

大家好啊,罗峰今天来给大家分好用的源码系统了。今天要给大家分享的是一款PHP众筹系统源码。众筹作为一种新型的融资方式,逐渐在市场上占据了重要的地位。从公益众筹到商品众筹,再到股权众筹,各种众筹模式层出不穷。然而&#xff…

SELinux refpolicy详解(1)

本文部分内容参考: SELinux - ArchWiki SELinux_百度百科 一、SELinux介绍 1. SELinux简介 SELinux(Security-Enhanced Linux,安全增强型Linux)是美国国家安全局(NSA)对于强制访问控制的实现&#xff0…

element-plus的el-dropdown去除鼠标悬浮或点击时的黑边框

设置为outline:unset;或者outline:none;即可 :deep(.el-tooltip__trigger:focus-visible) {outline: unset;}

flutter 输入框组件 高度问题

使用的组件名字为 TestField 组件 TestField 配置 占位文字 设置 decoration 属性 InputDecoration 中hintText去掉输入到 输入框的间距 InputDecoration 中contentPadding EdgeInsets.zero去掉边框中的间距 InputDecoration 中 使用 isDense:true设置输入框内文字的颜色 …

【OpenCV+OCR】计算机视觉:识别图像验证码中指定颜色文字

文章目录 1. 写在前面2. 读取验证码图像3. 生成颜色掩码4. 生成黑白结果图5. OCR文字识别6. 测试结果 【作者主页】:吴秋霖 【作者介绍】:Python领域优质创作者、阿里云博客专家、华为云享专家。长期致力于Python与爬虫领域研究与开发工作! 【…

(动手学习深度学习)第13章 实战kaggle竞赛:狗的品种识别

文章目录 1. 导入相关库2. 加载数据集3. 整理数据集4. 图像增广5. 读取数据6. 微调预训练模型7. 定义损失函数和评价损失函数9. 训练模型 1. 导入相关库 import os import torch import torchvision from torch import nn from d2l import torch as d2l2. 加载数据集 - 该数据…

关于 IBM Spectrum LSF

关于 IBM Spectrum LSF IBM Spectrum LSF 允许您使用 IBM Spectrum LSF 作为 HPC 调度软件来部署高性能计算 (HPC) 集群。 此产品使用基于开放式源代码 Terraform 的自动化来供应和配置 IBM Cloud 资源。 通过简单的步骤来定义配置属性并使用自动化部署,您可以在几…

如何判断交流回馈老化测试负载是否合格?

交流回馈老化测试负载是用于模拟实际工作环境中设备运行状态的测试工具,主要用于检测设备的耐久性和稳定性。 负载性能:需要检查负载的性能是否符合设计要求,这包括负载的功率、电流、电压等参数是否在规定的范围内,以及负载的工作…