QML 无边框窗口翻转动画

article/2025/7/12 23:10:29

目录

    • 引言
    • 核心组件实现
      • 无边框翻转窗口(FlipableDemo.qml)
      • 登录页面和设置页面(省略)
      • 主界面集成(Main.qml)
    • 下载链接

引言

接上篇 QML 滑动与翻转效果(Flickable与Flipable) 。本文通过登录界面(无边框窗口)翻转示例,进一步说明Flipable组件的实际应用方法。


核心组件实现

无边框翻转窗口(FlipableDemo.qml)

import QtQuick
import QtQuick.ControlsWindow {width: 400height: 400title: "登录"// visible: truecolor: "transparent"flags: Qt.FramelessWindowHint //无边框窗口Flipable {id: flipableanchors.fill: parentproperty bool flipped: falsefront: LoginPage {width: parent.widthheight: parent.heightonSettingsRequested: flipable.flipped = true}back: LoginSetting {width: parent.widthheight: parent.heightonBackRequested: flipable.flipped = false}transform: Rotation {id: rotationorigin.x: flipable.width/2origin.y: flipable.height/2axis.x: 0; axis.y: 1; axis.z: 0angle: 0}states: State {name: "back"when: flipable.flippedPropertyChanges { target: rotation; angle: 180 }}transitions: Transition {NumberAnimation {target: rotationproperty: "angle"duration: 500easing.type: Easing.InOutQuad}}}
}

代码说明:

这段代码定义了一个无边框的窗口,窗口中包含一个可翻转的组件,用于在登录页面和登录设置页面之间进行切换,以下是具体介绍:

窗口设置:

  • visible: true :此处被注释掉了,默认窗口不可见。
  • color: "transparent" :设置窗口的背景颜色为透明。
  • flags: Qt.FramelessWindowHint :设置窗口的标志为无边框窗口,使窗口没有默认的窗口边框和标题栏。

Flipable 组件:

  • Flipable :创建一个可翻转的组件,允许在其前后两个面之间进行切换。
  • property bool flipped: false :定义一个bool属性 flipped,用于指示当前是否处于翻转状态,初始值为 false

正面页面设置:

  • front: LoginPage :指定 Flipable 组件的正面为一个名为 LoginPage 的页面。
  • onSettingsRequested: flipable.flipped = true :当在 LoginPage 中触发 settingsRequested 信号时,将 flipableflipped 属性设置为 true,从而触发页面翻转,显示背面的设置页面。

背面页面设置:

  • back: LoginSetting :指定 Flipable 组件的背面为一个名为 LoginSetting 的页面。
  • onBackRequested: flipable.flipped = false :当在 LoginSetting 中触发 backRequested 信号时,将 flipableflipped 属性设置为 false,触发页面翻转,返回正面的登录页面。

旋转变换:

  • transform: Rotation :为 Flipable 组件添加一个旋转变换。
  • origin.x: flipable.width/2origin.y: flipable.height/2 :设置旋转的中心点为 Flipable 组件的中心位置。
  • axis.x: 0; axis.y: 1; axis.z: 0 :设置旋转轴为 Y 轴,即绕垂直轴旋转。
  • angle: 0 :初始旋转角度为 0 度。

状态和状态切换:

  • states: State :定义 Flipable 组件的状态。
  • name: "back" :指定状态的名称为 “back”,表示背面朝上的状态。
  • when: flipable.flipped :当 flipable.flippedtrue 时,触发该状态。
  • PropertyChanges :在该状态下,对 rotation 对象的 angle 属性进行修改,设置其值为 180 度,实现页面的翻转。

运行效果

请添加图片描述


登录页面和设置页面(省略)

具体代码省略,详情请看GitCode链接:

  • 登录页面代码:LoginPage.qml
  • 设置页面代码:LoginSetting.qml

在这里插入图片描述


主界面集成(Main.qml)

ApplicationWindow {SwipeView {id: swipeViewanchors.fill: parentItem {...... }Item { ......}Item {Column {spacing: 20anchors.centerIn: parentFlipableDemo {id: loginDialogvisible: false}Button {width: 120height: 40text: "弹窗"onClicked: loginDialog.visible = true}}}}PageIndicator {anchors.bottom: swipeView.bottomanchors.horizontalCenter: parent.horizontalCentercurrentIndex: swipeView.currentIndexcount: swipeView.count}
}

代码说明:

这段代码定义了一个应用窗口,主要包含一个可滑动视图(SwipeView)和一个页面指示器(PageIndicator)。

SwipeView:

  • SwipeView 是一个用于创建可滑动视图的组件,允许用户通过滑动在不同的页面(子项)之间切换。
  • 在 SwipeView 中包含了多个子项,每个子项都是一个 Item,这里只展示了第三个子项的详细内容,前两个子项用于展示上篇示例:QML 滑动与翻转效果(Flickable与Flipable) 。
  • FlipableDemo 是一个自定义的弹窗组件,初始时设置为不可见。

Button 按钮控件:

  • 当按钮被点击时,会将 loginDialog 的 visible 属性设置为 true,从而显示弹窗。

PageIndicator组件:

PageIndicator 用于显示当前所在页面的索引以及总共有多少页面,帮助用户了解自己在滑动视图中的位置。其中:

  • currentIndex 属性绑定到 swipeView.currentIndex,表示当前显示的页面索引。
  • count 属性绑定到 swipeView.count,表示滑动视图中总共有多少页面。

下载链接

下载链接:GitCode -> Flickable & Flipable Demo

在这里插入图片描述


http://www.hkcw.cn/article/DHSLfePEsy.shtml

相关文章

若依框架修改模板,添加通过excel导入数据功能

版本:我后端使用的是RuoYi-Vue-fast版本,前端是RuoYi-Vue3 需求: 我需要每个侧边栏功能都需要具有导入excel功能,但是若依只有用户才具备,我需要代码生成的每个功能都拥有导入功能。​ 每次生成一个一个改实在是太麻烦了。索性…

ECS-7000能耗监测系统能耗数据管理机

一、能耗系统介绍 能耗监测系统通过计算机和通讯网络,配电房的现场设备连接为一个有机的整体,实现电网设备运行的远程监控和集中管理。设计中充分体现系统的可用性、先进性、方便性、安全性、可靠性、可扩展性及系统性价比的合理性。 厂家:…

分层模态内相关学习用于无标签三维语义分割

摘要 Recent methods for label-free 3D semantic segmentation aim to assist 3D model training by leveraging the openworld recognition ability of pre-trained vision language models. However, these methods usually suffer from inconsistent and noisy pseudo-lab…

[C++]vc6.0在win10或者win11上下载安装和简单使用教程

VC6.0,即Microsoft Visual C 6.0,是微软公司于1998年推出的一款经典的集成开发环境(IDE),在Windows平台软件开发领域具有重要地位。 它支持C和C语言编程,功能强大且全面。其核心优势在于集成了高效的编译器…

TEC温度控制平台的核心技术解析

TEC-2580-500W-24V TEC温度控制平台是一种基于半导体制冷片(TEC)的高性能温度控制系统,该平台通常由TEC制冷片、温度传感器、控制器、散热系统等部分组成,具有高精度、快速响应、易于集成等优点。具有高精度、高稳定度、长寿命、体…

Spring MVC 框架

目录 1.MVC的定义 2.SpringMVC的实际应用 (1)建立连接 1.RequestMapping注解介绍 2.RequestMapping注解的请求方式 GET请求: POST请求: 指定GET/POST方法类型: (2)请求 传递参数 1.传…

Python+GEE+AI,从基础到实战,全面掌握遥感云大数据分析与可视化!涵盖森林监测、洪涝灾害、干旱评估、植被变化等热点领域的实际应用方案

🔍 遥感技术的飞跃与挑战 随着航空、航天以及近地空间遥感平台的持续发展,遥感技术近年来取得了显著进步。遥感数据的空间分辨率、时间分辨率、光谱分辨率以及数据量都大幅提升,呈现出典型的大数据特征。这为相关研究带来了新的机遇&#xff…

迈迪工具集添加标准件

上次介绍了外购件的选型软件,这次来介绍一下标准件选型工具-迈迪工具集。 机械设计插件-CSDN博客 比如我要给这里的法兰添加螺栓和螺母,就可以打开迈迪工具集,它有丰富的标准件库,挑选自己需要的标准件,然后双击图片&…

零硬件成本玩转嵌入式通信!嵌入式仿真实验教学平台解锁STM8S串口黑科技

一、串口通信的核心原理与教学挑战 异步串行通信(UART)作为嵌入式系统的基础通信协议,其技术内涵远超简单的数据收发。该协议通过精确的时序框架实现设备对话:起始位标志传输开始,8-9位数据位承载信息,停止…

C++ —— B/类与对象(中)

🌈个人主页:慢了半拍 🔥 创作专栏:《史上最强算法分析》 | 《无味生》 |《史上最强C语言讲解》 | 《史上最强C练习解析》|《史上最强C讲解》 🏆我的格言:一切只是时间问题。 ​ 目录 一、类的6个默认成员…

2024 CKA模拟系统制作 | Step-By-Step | 17、题目搭建-排查故障节点

目录 免费获取题库配套 CKA_v1.31_模拟系统 一、题目 二、考点分析 1. Kubernetes 节点状态诊断 2. 节点故障修复技能 3. 持久化修复方案 4. SSH 特权操作 三、考点详细讲解 1. 节点状态机制详解 2. 常见故障原因深度分析 3. 永久修复技术方案 四、实验环境搭建步骤…

Java EE初阶——网络初识

1. 网络初始 网络互联::将多台计算机连接在⼀起,完成数据共享。 数据共享本质是⽹络数据传输,即计算机之间通过⽹络来传输数据,也称为⽹络通信。 根据⽹络互连的规模不同,可以划分为局域⽹和⼴域⽹。 1. 局…

机试 | STL | string | 统计单词数

题目: P1308 [NOIP 2011 普及组] 统计单词数 - 洛谷 输入 输入格式 共 2 行。 第 1 行为一个字符串,其中只含字母,表示给定单词; 第 2 行为一个字符串,其中只可能包含字母和空格,表示给定的文章。 第二行的…

nginx源码下载和测试

官网:nginx 源码包: nginx-1.19.3.tar.gz 源码包下载: wget http://nginx.org/download/nginx-1.19.3.tar.gz -P /usr/src 进入官网 以1.27.5为例 第一步,创建nginx的文件夹 mkdir /usr/local/nginxcd ~ 第二步创立文件后拖入…

2025南师附中特长生考试 人工智能加试T1

题目描述 在 x □ 1 □ 2 □ 3 □ 4 □ 5 □ 6 □ 7 □ 8 □ 9 x\square1\square2\square3\square4\square5\square6\square7\square8\square9 x□1□2□3□4□5□6□7□8□9 的 □ \square □ 内填入 或 − - −. (1) 求证: 27 27 27 可以被这样表示&…

老旧设备数据采集破局 AI图像解析如何让质检LIMS系统焕发新生

在实验室数字化进程中,大量服役超过 10 年的老旧设备成为数据采集的 “拦路虎”:指针式仪表盘需人工读取、纸质原始记录靠手工录入、非标准接口设备数据无法自动获取…… 某化工实验室因 15 台老旧设备数据采集耗时占比达 40%,检测效率长期滞…

PyQt6基础_QCharts绘制饼状图

前置: PyQt6中没有QtCharts包,需要安装 pip install PyQt6-Charts 结果: 1 高亮内容固定突出,并显示文本 2 鼠标悬浮在其他扇区,临时突出显示并显示文本 代码: import sys from PyQt6.QtCore import Q…

Cache数据库的高可用架构设计与选择

一、Cache数据库的高可用架构 对于Cache数据库的高可用性最佳实践,官方提供了以下几种策略: 集成基于操作系统级HA软件以及搭配共享存储的故障转移集群 基于操作系统的HA软件,搭配共享存储的方案,Cache实例安装在共享存储中&#…

开源协议:构建全球技术协作的基石

文章目录 一、开源协议的本质与存在价值(一)开源协议的定义与法律属性(二)开源协议的历史演进(三)开源协议的核心价值 二、主流开源协议分类与核心特性(一)宽松协议(Perm…

MySQL事务及其原理

事务是一组操作的集合,这组集合要么同时成功,要么同时失败 MySQL事务默认是自动提交的,也就是说每一条sql语句就是一条事务 查看/设置事务提交方式 关闭自动提交只有在其所在的查询窗口有效 select autocommit; --查看提交方式 SET autoc…