Qt6 Qt Quick UI原型学习QML第六篇

这篇具有很好参考价值的文章主要介绍了Qt6 Qt Quick UI原型学习QML第六篇。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


效果展示

Qt6 Qt Quick UI原型学习QML第六篇,Qt6 高级开发工程师,qt,ui,Qt6,QML,c++

动画片第一小节

源码(AnimationExample.qml)主文件

import QtQuick 2.12
import QtQuick.Window 2.12
import QtQuick.Controls 2.12


Window {
    // 为窗口对象设置一个唯一标识符。
    id: window
    // 设置窗口对象可见。
    visible: true
    width: 600
    height: 600
    // 设置窗口的标题
    title: qsTr("QML study")

    Image {
        id: root
        source: "pic//C.png"
        // 设置图片的显示尺寸为400x400像素。
        // sourceSize: Qt.size(600, 600)
        anchors.fill: parent

        // 定义属性变量
        property int padding: 10
        property int duration: 3000
        property bool running: false

        Image {
            id: box
            x: root.padding;
            y: (root.height - height) / 2
            source: "pic//5.jpg"
            sourceSize: Qt.size(200,200)

            // 创建一个对x属性的数值动画。
            NumberAnimation on x {
                // 设置动画的目标值为root.width - box.width - root.padding
                to: root.width - box.width - root.padding
                duration: root.duration // 设置动画的持续时间为root.duration的值。
                running: root.running   // 设置动画是否运行的状态为root.running的值。
            }

            // 创建一个对rotation属性的旋转动画。
            RotationAnimation on rotation {
                // 设置旋转动画的目标值为360度。
                to:360
                duration: root.duration
                running: root.running
            }

            MouseArea {
                anchors.fill: parent
                onClicked: root.running = true
            }
        }
    }

    // 设置动画的目标值为40,持续时间为4000毫秒。意味着greenBox将会从初始位置移动到y坐标为40的位置,并在4000毫秒内完成该过程。
    ClickableImageV2 {
        id: greenBox
        x: 40; y: root.height-height
        source: "pic//1.jpg"
        text: qsTr("animation on property")
        NumberAnimation on y {
            to: 40; duration:3000
            running: root.running
        }
    }

    // 第二个对象使用Behavior on动画。此行为告诉属性它应该对值的每次变化进行动画处理。可以通过设置来禁用该行为enabled: false在……上Behavior元素。
    ClickableImageV2 {
        id: blueBox
        x: (root.width-width)/2; y: root.height-height
        source: "pic//2.jpg"
        text: qsTr("behavior on property")
        Behavior on y {
            NumberAnimation { duration: 3000 }
        }

        //onClicked: y = 40
        // random y on each click
        onClicked: y = 40 + Math.random() * (205-40)
    }

    // 第三个对象使用独立动画。动画被定义为它自己的元素,几乎可以出现在文档中的任何地方。
    ClickableImageV2 {
        id: redBox
        x: root.width-width-40; y: root.height-height
        source: "pic//3.jpg"
        // 当redBox被点击时,触发anim动画开始播放。动画会改变redBox的y属性,使其移动到目标值为40的位置。
        onClicked: anim.start()
        // onClicked: anim.restart()

        text: qsTr("standalone animation")

        NumberAnimation {
            id: anim
            // 设置动画的目标对象为redBox,即要改变属性的对象。
            target: redBox
            // 设置动画要改变的属性为y。
            properties: "y"
            to: 40
            duration: 3000
        }
    }
}

解释语法

  • import QtQuick 2.12:导入QtQuick模块的版本2.12,用于创建Qt快速应用程序的用户界面。

  • import QtQuick.Window 2.12:导入QtQuick.Window模块的版本2.12,用于创建窗口对象。

  • import QtQuick.Controls 2.12:导入QtQuick.Controls模块的版本2.12,用于创建用户界面控件。

  • Window {}:定义了一个窗口对象,并在花括号内设置窗口的属性和组件。

  • id: window:为窗口对象设置了一个唯一标识符。

  • visible: true:设置窗口对象可见。

  • width: 600:设置窗口的宽度为600个单位。

  • height: 600:设置窗口的高度为600个单位。

  • title: qsTr("QML study"):设置窗口的标题为"QML study",使用qsTr函数进行翻译。

  • Image {}:定义了一个图片对象,并在花括号内设置图片的属性和组件。

  • id: root:为图片对象设置了一个唯一标识符。

  • source: "pic//C.png":设置了图片的来源为"pic//C.png"。

  • anchors.fill: parent:设置图片对象填满父级容器。

  • property int padding: 10:定义了一个属性变量padding,并将其值设置为10。

  • property int duration: 3000:定义了一个属性变量duration,并将其值设置为3000。

  • property bool running: false:定义了一个属性变量running,并将其值设置为false。

  • Image {}:在图片对象内部定义了另一个图片对象,并设置其属性和组件。

  • id: box:为内部图片对象设置了一个唯一标识符。

  • x: root.padding:设置了内部图片对象的x坐标为root.padding的值。

  • y: (root.height - height) / 2:设置了内部图片对象的y坐标为(root.height - height) / 2的值。

  • source: "pic//5.jpg":设置了内部图片的来源为"pic//5.jpg"。

  • sourceSize: Qt.size(200,200):设置了内部图片的显示尺寸为200x200像素。

  • NumberAnimation on x {}:创建了一个对x属性的数值动画,并在花括号内设置动画的属性和值。

  • to: root.width - box.width - root.padding:设置动画的目标值为(root.width - box.width - root.padding)的值。

  • duration: root.duration:设置动画的持续时间为root.duration的值。

  • running: root.running:设置动画是否运行的状态为root.running的值。

  • RotationAnimation on rotation {}:创建了一个对rotation属性的旋转动画,并在花括号内设置动画的属性和值。

  • to:360:设置旋转动画的目标值为360度。

  • duration: root.duration:设置旋转动画的持续时间为root.duration的值。

  • running: root.running:设置旋转动画是否运行的状态为root.running的值。

  • MouseArea {}:定义了一个鼠标区域对象,并在花括号内设置区域的属性和事件。

  • anchors.fill: parent:设置鼠标区域对象填满父级容器。

  • onClicked: root.running = true:当鼠标区域被点击时,将root.running属性设置为true。

  • ClickableImageV2 {}:定义了一个可点击的图片对象,并在花括号内设置图片的属性和组件。

  • id: greenBox:为可点击的图片对象设置一个唯一标识符。

  • x: 40y: root.height-height:设置可点击的图片对象的x和y坐标的初始值。

  • source: "pic//1.jpg":设置可点击的图片的来源为"pic//1.jpg"。

  • text: qsTr("animation on property"):设置可点击的图片的文本为"animation on property",使用qsTr函数进行翻译。

  • NumberAnimation on y {}:创建了一个对y属性的数值动画,并在花括号内设置动画的属性和值。

  • to: 40:设置动画的目标值为40。

  • duration:3000:设置动画的持续时间为3000。

  • running: root.running:设置动画是否运行的状态为root.running的值。

  • Behavior on y {}:在可点击的图片对象内部使用Behavior元素,用于控制属性的动画处理方式。

  • NumberAnimation { duration: 3000 }:设置了对属性的数值动画,并设置动画的持续时间为3000。

  • onClicked: y = 40 + Math.random() * (205-40):当可点击的图片对象被点击时,将y属性设置为一个40到205之间的随机值。

  • ClickableImageV2 {}:定义了另一个可点击的图片对象,并在花括号内设置图片的属性和组件。

  • id: redBox:为可点击的图片对象设置一个唯一标识符。

  • x: root.width-width-40y: root.height-height:设置可点击的图片对象的x和y坐标的初始值。

  • source: "pic//3.jpg":设置可点击的图片的来源为"pic//3.jpg"。

  • onClicked: anim.start():当可点击的图片对象被点击时,触发anim动画开始播放。

  • text: qsTr("standalone animation"):设置可点击的图片的文本为"standalone animation",使用qsTr函数进行翻译。

  • NumberAnimation {}:定义了一个数值动画,用于控制属性的数值变化。

  • target: redBox:设置动画的目标对象为redBox,即要改变属性的对象。

  • properties: "y":设置动画要改变的属性为y。

  • to: 40:设置动画的目标值为40。

  • duration: 3000:设置动画的持续时间为3000。

源码子文件(ClickableImageV2.qml)

import QtQuick 2.0

// 用于创建一个可点击的项目(Item)
Item {
    id:root
    // 设置项目的宽度为column子元素的宽度。
    width: column.childrenRect.width
    height: column.childrenRect.height

    // 定义一个名为text的属性,该属性与label的text属性关联,允许在外部访问和修改该属性。
    property alias text: label.text
    property alias source: image.source

    // signal clicked - 声明一个clicked信号,表示项目被点击的事件。
    signal clicked

    Column {
        id:column
        spacing: 10
        Image {
            id: image
            sourceSize: Qt.size(90,90)
        }

        Text {
            id: label
           width: image.width
           // 设置文本的水平对齐方式为居中对齐。
            horizontalAlignment: Text.AlignHCenter
            wrapMode: Text.WordWrap
            color: "#000000"
        }
    }

    MouseArea {
        // 设置鼠标区域的大小与父元素(即Item)相同。
        anchors.fill: parent
        // 当鼠标区域被点击时,触发项目的clicked信号
        onClicked: root.clicked()
    }
}

解释语法

  • import QtQuick 2.0:导入QtQuick模块的版本2.0,用于创建Qt快速应用程序的用户界面。

  • Item {}:定义了一个可点击的项目,并在花括号内设置该项目的属性和组件。

  • id:root:为项目设置了一个唯一标识符。

  • width: column.childrenRect.width:设置项目的宽度为列(Column)子元素的宽度。

  • height: column.childrenRect.height:设置项目的高度为列(Column)子元素的高度。

  • property alias text: label.text:定义了一个名为text的属性,并将其与label的text属性相关联,允许在外部访问和修改该属性。

  • property alias source: image.source:定义了一个名为source的属性,并将其与image的source属性相关联,允许在外部访问和修改该属性。

  • signal clicked:声明了一个clicked信号,表示项目被点击的事件。

  • Column {}:定义了一个列(Column),用于组织子元素的垂直排列。

  • id:column:为列设置了一个唯一标识符。

  • spacing: 10:设置列中子元素之间的间隔为10个单位。

  • Image {}:定义了一个图片对象,并在花括号内设置图片的属性和组件。

  • id: image:为图片对象设置了一个唯一标识符。

  • sourceSize: Qt.size(90,90):设置了图片的显示尺寸为90x90像素。

  • Text {}:定义了一个文本对象,并在花括号内设置文本的属性和组件。

  • id: label:为文本对象设置了一个唯一标识符。

  • width: image.width:设置文本的宽度与图片的宽度相同。

  • horizontalAlignment: Text.AlignHCenter:设置文本的水平对齐方式为居中对齐。

  • wrapMode: Text.WordWrap:设置文本的换行模式为自动换行。

  • color: "#000000":设置文本的颜色为黑色。

  • MouseArea {}:定义了一个鼠标区域对象,并在花括号内设置区域的属性和事件。

  • anchors.fill: parent:设置鼠标区域的大小与父元素(即Item)相同,填满整个区域。

  • onClicked: root.clicked():当鼠标区域被点击时,触发项目的clicked信号。文章来源地址https://www.toymoban.com/news/detail-601083.html

到了这里,关于Qt6 Qt Quick UI原型学习QML第六篇的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Qt Quick程序的发布|Qt5中QML和Qt Quick 的更改

    # Quick程序的发布旧版做法 # Qt5中QML和Qt Quick 的更改 1.QML语言的更改(Qt4-Qt5)     在QML语言中,只有少量更改会影响QML代码的迁移:无法直接导入单独的文件(例如:import\\\"MyType.qml”),需要导人该文件所在的目录;     JavaScript文件中的相对路径被解析为相对于该JavaScrip

    2024年01月25日
    浏览(50)
  • 【Qt QML入门】第一个Quick应用

    运行结果: 打开Qt Creator,创建一个Qt Quick Qpplication,IDE为我们创建一个应用工程,其中包含如下文件: .pro工程文件,我们通过它来打开整个工程:  在工程文件中,通常其中的字段定义: main.qml 是Quick应用的主窗口文件,下一篇我们重点介绍QML当中的元素特性,目前只需要

    2024年02月12日
    浏览(41)
  • 【五一创作】QML、Qt Quick /Qt中绘制圆形

    有多种方法可以在 Qt Quick 中绘制圆形。以下是一些主要方法: 使用 Canvas 元素 使用 Shapes 模块: a. 使用 PathArc 和 PathLine 元素组合绘制一个完整的圆形。 b. 使用 PathEllipse 元素绘制一个椭圆形,并将其设置为圆形。 使用 Rectangle 元素绘制圆角矩形并将圆角半径设置为宽度和高

    2024年02月03日
    浏览(40)
  • C++ cmake工程引入qt6和Quick 教程

    在现代软件开发中,跨平台的图形用户界面(GUI)和可视化功能已经变得非常重要。Qt和Qt Quick(基于QML)是强大而灵活的工具,可以帮助开发者快速构建出色的应用程序。然而,当你已经有一个基于C++和CMake的工程时,将Qt和Qt Quick引入可能需要一些指导。 本教程将帮助具有

    2024年02月03日
    浏览(39)
  • 【QT教程】QT6 QML在虚拟现实中的应用

    主页  软件开发  QT6 QML框架原理与源码分析 补天云火鸟自动化创作平台 您能够创建大约3000 个短视频 一天可以轻松创建多达 100 个视频 【免费公开课 QT视频课程】您真的能免费看很多有用的QT视频! QT6_QML在虚拟现实中的应用 使用AI技术辅助生成 目录 1  QT6_QML基础回顾 1.

    2024年04月15日
    浏览(67)
  • Qt6 第一天认识基本模块、附加模块、支持的平台、QML用户界面

    Qt 5在很多年前发布,引入了一种新的声明方式来编写令人惊叹的用户界面。从那时起,我们周围的世界发生了很大的变化。 Qt 6将是Qt 5的延续,不会对大多数用户造成干扰。是什么让Qt对用户有价值? 它的跨平台特性 它的可扩展性 世界一流的API和文档 可维护性、稳定性和兼

    2024年02月13日
    浏览(51)
  • Java学习手册——第六篇输入输出

    几乎所有的开发语言都会有输入输出,程序的定义里面也有输入输出,可以见得输入输出是何等的重要。如果没有输入,人类如何与计算机交流?如果没有输出,一切努力都是白费,因为我们看不到结果。 这里的输入输出你可以简单的理解为人与人之间的沟通交流,虽然我们

    2024年02月02日
    浏览(46)
  • 【夜深人静学习数据结构与算法 | 第六篇】贪心算法

    目录 前言: 引入: 贪心算法:     455. 分发饼干 - 力扣(LeetCode) 376. 摆动序列 - 力扣(LeetCode) 53. 最大子数组和 - 力扣(LeetCode) 122. 买卖股票的最佳时机 II - 力扣(LeetCode)         在本文我们将为大家介绍在计算机中比较常见的一种算法:贪心算法。他并没有具体的代

    2024年02月09日
    浏览(52)
  • spring boot学习第六篇:SpringBoot 集成WebSocket详解

    1、WebSocket简介 WebSocket协议是基于TCP的一种新的网络协议。它实现了浏览器与服务器全双工(full-duplex)通信——允许服务器主动发送信息给客户端。 2、为什么需要WebSocket HTTP 是基于请求响应式的,即通信只能由客户端发起,服务端做出响应,无状态,无连接。 无状态:每次连

    2024年01月21日
    浏览(52)
  • Qt Quick系列(6)—多风格UI页面

    🚀作者:CAccept 🎂专栏:Qt Quick Qt Quick控件用于创建由标准化组件(如按钮、标签、滑块等)构建的用户界面。 QtQuick.Controls:基本控件。 QtQuick.Templates:为控件提供行为化的、非可化视的基本类型。 QtQuick.Controls.Imagine:为Imagine主题风格提供支持。 QtQuick.Controls.Material:为

    2024年02月09日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包