QT Demo 之 text

学习了MouseArea,我们继续选择一个基本的组件进行学习,这次我们
摘要由CSDN通过智能技术生成

学习了MouseArea,我们继续选择一个基本的组件进行学习,这次我们学习text的Demo。

text的Demo位于F:\Qt\Qt5.3.2\Examples\Qt-5.3\quick\text目录。通过text.qmlproject文件我们了解,该Demo的mainFile是text.qml。

Item {

    height: 480
    width: 320
    LauncherList {
        id: ll
        anchors.fill: parent
        Component.onCompleted: {
            addExample("Hello", "An Animated Hello World", Qt.resolvedUrl("fonts/hello.qml"));
            addExample("Fonts", "Using various fonts with a Text element", Qt.resolvedUrl("fonts/fonts.qml"));
            addExample("Available Fonts", "A list of your available fonts",  Qt.resolvedUrl("fonts/availableFonts.qml"));
            addExample("Banner", "Large, scrolling text", Qt.resolvedUrl("fonts/banner.qml"));
            addExample("Img tag", "Embedding images into text", Qt.resolvedUrl("imgtag/imgtag.qml"));
            addExample("Text Layout", "Flowing text around items", Qt.resolvedUrl("styledtext-layout.qml"));
        }
    }
}
从代码来看,该Example主界面是一个LauncherList,其中包含6个子元素,分别从6个方面演示text的操作。

先看一下程序运行的效果图:

LauncherList简述

LauncherList是一个自定义的容器,具体实现是在qrc:/shared/LauncherList.qml文件中,其自身的注释说明如下:
    //model is a list of {"name":"somename", "url":"file:///some/url/mainfile.qml"}
    //function used to add to model A) to enforce scheme B) to allow Qt.resolveUrl in url assignments

此处我们知道LaunchList是一个可以添加name,description和url的可点击栏即可,后面有机会再详细分析LaunchList。

在使用LauncherList时,添加List元素是在Component.onCompleted:{}响应函数中添加的,针对Component,官方说明如下:
Components are reusable, encapsulated QML types with well-defined interfaces.
Components are often defined by component files - that is, .qml files.

而completed()信号的以及onCompleted响应函数的说明如下:
completed()
Emitted after the object has been instantiated. This can be used to execute script code at startup, once the full QML environment has been established.The corresponding handler is onCompleted.


因此,我们了解到在这里LauncherList.qml整体是作为一个Component的,当LauncherList实例化完成之后,就会触发onCompleted响应函数,来向LauncherList中addExample。
下面我们就开始分析每一个Example。

fonts/hello.qml文件

hello.qml源码结构比较简单,只有一个Item:

Rectangle {
    id: screen

    width: 320; height: 480
    color: "black"

    Item {....}
}
Item中只有一个Text字段,坐标在父元素的居中位置:

    Item {
        id: container
        x: screen.width / 2; y: screen.height / 2

        Text {....}
    }
Text中描述了颜色(白色)、文本内容(Hello world!)、字体大小(32),而且还定义了两个SequentialAnimation分别表示字间距和透明度上的动画效果。

        Text {
            id: text
            anchors.centerIn: parent
            color: "white"
            text: "Hello world!"
            font.pixelSize: 32

//! [letterspacing]
            SequentialAnimation on font.letterSpacing {....}
//! [letterspacing]
            SequentialAnimation on opacity {....}
        }

字间距动画效果

            SequentialAnimation on font.letterSpacing {
                loops: Animation.Infinite;
                NumberAnimation { from: 0; to: 50; easing.type: Easing.InQuad; duration: 3000 }
                ScriptAction {
                    script: {
                        container.y = (screen.height / 4) + (Math.random() * screen.height / 2)
                        container.x = (screen.width / 4) + (Math.random() * screen.width / 2)
                    }
                }
            }
从上面这个动画效果,我们可以看到以下几个组成部分:

  1. 动画循环次数:这里是无线循环的显示动画。(如果要停掉动画,可以设置running属性为false,或者调用stop()函数)
  2. 定义一个具体的动画:这里使用的是一个可以根据数字变化的动画效果:从0增加到50(数值的改变作用在font.letterSpacing),设置擦除曲线为InQuad(具体效果未知),动画时长为3s
  3. 定义一个脚本动作:具体的效果是随机改变container的x,y坐标值

整体的动画效果就是:

  • 在3s内不断增大文本的字间距从0到50,然后随机改变一下文本的x,y坐标;
  • 循环进行上述操作。

透明度动画效果


                
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Qt QML仪表Demo是一个用于展示仪表效果的示例程序,通过使用Qt框架中的QML语言进行开发。QML是一种用于构建用户界面的声明式语言,它可以与C++代码无缝交互,并且可以跨平台运行。 这个仪表Demo通常包含一个圆形的仪表盘,上面显示着一些指针和刻度,用于表示某种状态或数值。这个示例程序可以用来演示一些实际应用场景,如车辆仪表盘、仪器仪表等。 在QML文件中,我们可以定义一个圆形的画布并在上面绘制各种图形元素。例如,我们可以添加一个圆形的外环作为仪表盘的边框,然后在中间添加一个圆形的刻度盘,并绘制出不同的刻度线。接着,我们可以添加指针和数字等元素,来显示具体的数值。 在QML中,我们可以使用一些内置的属性和表达式来实现各种动画效果。比如,我们可以定义一个动画来实现指针的旋转,使其根据仪表盘上的值进行相应的角度调整。还可以通过属性绑定来实时更新仪表盘的数值显示。 除了基本的仪表功能,我们还可以通过QML的扩展性来添加更多的交互功能。例如,通过添加鼠标事件处理器或触摸事件处理器,我们可以让用户通过拖动、滑动等方式来手动调整仪表盘的数值。 总之,Qt QML仪表Demo是一个通过使用Qt框架中的QML语言开发的示例程序,用于展示仪表效果。它可以帮助开发者更好地理解和学习QML的使用方法,并将其应用于实际项目中。 ### 回答2: Qt QML仪表Demo是一个使用Qt Quick绘制仪表盘界面的示例程序。QML是一种声明性语言,用于构建基于Qt的用户界面。 该示例程序展示了如何使用QML绘制一个具有平滑动画效果的仪表盘界面。在这个示例中,仪表盘界面由一个圆形背景、一个指针和一些标签组成。 首先,通过QML的绘图元素Path绘制一个圆形背景。可以设置背景的颜色、半径和边框。然后,使用Item元素嵌套一个Rectangle元素,用作指针。可以根据仪表盘当前值计算指针的角度,并将其旋转到正确的位置。 除了绘制背景和指针,示例中还包含一些标签,用于显示仪表盘的范围和单位。这些标签可以使用Text元素和属性绑定来实现。可以根据需要设置标签的颜色、大小和位置。 示例程序还包含一些动画效果,用于平滑地过渡指针的位置。可以使用Behavior元素和属性动画来定义这些效果。例如,可以定义一个角度动画,使指针在数值改变时顺时针或逆时针旋转到新的位置。 为了实现用户交互,示例程序还使用了一些QML的交互元素,如Slider和Button。可以通过Slider来改变仪表盘的数值,从而实现指针的动态变化。而Button可以用于重置仪表盘的数值。 综上所述,Qt QML仪表Demo是一个使用Qt Quick绘制仪表盘界面的示例程序,通过展示QML的绘图元素、属性绑定、动画效果和用户交互来实现这个功能。 ### 回答3: Qt QML仪表Demo是一个基于Qt Quick和QML语言编写的示例应用程序,用于展示仪表盘的功能和样式。 该示例应用程序主要由以下几个部分组成: 1. 仪表盘组件:通过使用Qt Quick Controls组件库中的样式,可以创建一个美观和交互性强的仪表盘界面。例如,可以使用圆形进度条来显示速度、转速等信息,并使用指针在刻度上指示当前数值。 2. 数据模型:为了展示仪表盘的功能,需要使用数据模型来模拟一些实际的数值。可以创建一个虚拟的数据模型,包含一些属性,如速度、转速等,并使用属性绑定机制将这些属性与仪表盘组件上的对应属性绑定起来。 3. 用户交互:通过用户交互,可以实现一些仪表盘的交互功能。例如,可以通过滑动或点击来改变仪表盘上的数值,或者通过A/B按钮来切换仪表盘的显示模式。 4. 动画效果:使用Qt Quick的动画系统,可以为仪表盘组件添加一些动画效果。例如,在数值变化时可以添加一个渐变动画效果,使仪表盘的指针从一个数值平滑过渡到另一个数值。 Qt QML仪表Demo不仅可以作为一个示例应用程序来展示如何创建仪表盘界面,还可以作为一个基础框架,用于开发具有仪表盘功能的实际应用程序。通过修改和扩展仪表盘组件、数据模型和用户交互等部分,可以满足不同应用场景的需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值