QML类型说明-Flickable

Flickable

ImportStatement:   import QtQuick 2.2

Inherits:      Item

InheritedBy:    GridView and ListView.

 

Properties

atXBeginning: bool

atXEnd :bool

atYBeginning: bool

atYEnd :bool

bottomMargin: real

boundsBehavior: enumeration

contentHeight: real

contentItem: Item

contentWidth: real

contentX :real

contentY :real

dragging :bool

draggingHorizontally: bool

draggingVertically: bool

flickDeceleration: real

flickableDirection: enumeration

flicking :bool

flickingHorizontally: bool

flickingVertically: bool

horizontalVelocity: real

interactive: bool

leftMargin :real

maximumFlickVelocity: real

moving :bool

movingHorizontally: bool

movingVertically: bool

originX :real

originY :real

pixelAligned: bool

pressDelay :int

rebound :Transition

rightMargin: real

topMargin :real

verticalVelocity: real

visibleArea

visibleArea.xPosition: real

visibleArea.widthRatio: real

visibleArea.yPosition: real

visibleArea.heightRatio: real

 

Signals

flickEnded()

flickStarted()

movementEnded()

movementStarted()

 

Methods

cancelFlick()

flick(qrealxVelocity, qreal yVelocity)

resizeContent(realwidth, real height, QPointF center)

returnToBounds()

 

DetailedDescription

Flickable组件可在表面放置子组件。它能拖和挥动,以促使试图上的子组件滚动。这个设计是为了实现展示巨大数目的子组件。像ListView和GridView。

在传统的用户界面,试图能用标准控件滚动。诸如卷轴工具和箭头按钮。在一些情形下,按住鼠标按键并拖动鼠标来拖动视图也是可能的。

而在触摸用户界面,拖动行为常常被用户用一霎的行为提供,如用户在触摸屏上滑动,此时滚动将在用户停止触摸屏幕后继续。

Flickable不会自动包夹它的内容。如果不用全屏的子组件,我们应该设置clip属性为真。

下面的例子战士了在一个小视图中放大图片,用户可以拖动或滑动来看图片的不同部分。

 

importQtQuick 2.0

 

Flickable {

    width: 200; height: 200

    contentWidth: image.width; contentHeight:image.height

 

    Image { id: image; source:"bigImage.png" }

}

组件被作为Flickable的子宣布,将自动设置父为Flickable的contentItem。当在Flickable的子上操作时,这需要被考虑。例如附加到Flickable的绑定,对于contentItem.childrenRect是可用的。

 

Limitations

注意:由于实现细节,放置在Flickable中的组件不能被id锚定,使用parent替代。

 

PropertyDocumentation

atXBeginning: bool

flickable视图在X轴的开始位置,则为真。

 

atXEnd :bool

flickable视图在X轴的结束位置,则为真。

 

atYBeginning: bool

flickable视图在Y轴的开始位置,则为真。

 

atYEnd :bool

flickable视图在Y轴的结束位置,则为真。

 

bottomMargin: real

底部尺寸,除了contentWidth和contentHeight外被保留的空间。

 

boundsBehavior: enumeration

表面拖出Flickable的边界或过度的挥出Flickable的边界的处理。这能让边界变得柔软,而不是像硬邦邦的物理边界那样。

它能是下面的值:

Flickable.StopAtBounds-不能拖或挥出边界,在边界停止。

Flickable.DragOverBounds-能拖出边界,但挥不可以。

Flickable.DragAndOvershootBounds(default) -拖和挥都可以超出边界。

注意:挥是指在触摸屏上滑动的动作。

 

contentHeight: real

内容尺寸的高度(表面被Flickable控制)。一般会将它设置成所有子组件在Flickable中的合并尺寸。下面的代码展示了如何用这个属性显示比视图大的图片:

importQtQuick 2.0

 

Flickable {

    width: 200; height: 200

    contentWidth: image.width; contentHeight:image.height

 

    Image { id: image; source:"bigImage.png" }

}

在一些情况下,内容的尺寸能基于contentItem的childrenRect.width和childrenRect.height属性自动设置。例如上面的代码可以重写为:

contentWidth:contentItem.childrenRect.width; contentHeight: contentItem.childrenRect.height

自动设置假设子开始于坐标(0.0)

 

contentItem: Item

包含在Flickable中移动组件的内部组件。在Flickable中宣部的组件会自动关联父到Flickable的contentItem属性上。但动态的创建组件需要显示的指定父。例如:

Flickable {

    id: myFlickable

    function addItem(file) {

        var component =Qt.createComponent(file)

       component.createObject(myFlickable.contentItem);

    }

}

 

contentWidth: real

内容尺寸的宽度(表面被Flickable控制)。一般会将它设置成所有子组件在Flickable中的合并尺寸。下面的代码展示了如何用这个属性显示比视图大的图片:

importQtQuick 2.0

 

Flickable {

    width: 200; height: 200

    contentWidth: image.width; contentHeight:image.height

 

    Image { id: image; source:"bigImage.png" }

}

在一些情况下,内容的尺寸能基于contentItem的childrenRect.width和childrenRect.height属性自动设置。例如上面的代码可以重写为:

contentWidth:contentItem.childrenRect.width; contentHeight: contentItem.childrenRect.height

自动设置假设子开始于坐标(0.0)

 

contentX :real

当前Flickable视图的左上角在表面的X坐标。

 

contentY :real

当前Flickable视图的左上角在表面的Y坐标。

 

dragging :bool

视图是否由于用户拖动,正在水平、垂直或朝任何方向移动。

 

draggingHorizontally: bool

视图是否由于用户拖动,正在水平、垂直或朝任何方向移动。

 

draggingVertically: bool

视图是否由于用户拖动,正在水平、垂直或朝任何方向移动。

 

flickDeceleration: real

挥的减速度,默认值依赖于平台。

 

flickableDirection: enumeration

能挥的方向。

Flickable.AutoFlickDirection(default) -如果contentHeight不等于Flickable的高度,则允许垂直方向,如果contentWidth不等于Flickable的宽度,则允许水平方向。

Flickable.HorizontalFlick-允许水平方向

Flickable.VerticalFlick-允许垂直方向

Flickable.HorizontalAndVerticalFlick-允许水平和垂直方向

 

flicking :bool

视图是否由于用户挥,正在水平、垂直或朝任和方向移动。

 

flickingHorizontally: bool

视图是否由于用户挥,正在水平、垂直或朝任和方向移动。

 

flickingVertically: bool

视图是否由于用户挥,正在水平、垂直或朝任和方向移动。

 

horizontalVelocity: real

沿着x轴和y周的瞬间移动速度,单位像素/秒。报告的速度是平滑的,以避免不稳定的输出。注意当视图有巨大的内容尺寸(是视图尺寸的10倍以上)。在连续挥的情形下,速度可以超过触摸滑过的速度。这允许用户快速通过巨大的内容。

 

interactive: bool

是否允许用户与Flickable交互。如果用户不能在Flickable上拖或挥,就是不交互。默认为真。

这个属性用于暂时关闭交互。这用与用户在子组件上操作。例如,我们可能在用户操作子时,冻结Flickable地图,通过探出的窗口来滚动Flickable。

 

leftMargin :real

左边保留的空间。

 

maximumFlickVelocity: real

用户能挥的最大速度。单位像素/每秒。默认值依赖于平台。

 

moving :bool

视图是否由于用户拖或挥,正在水平、垂直或朝任何方向移动。

 

movingHorizontally: bool

视图是否由于用户拖或挥,正在水平、垂直或朝任何方向移动。

 

movingVertically: bool

视图是否由于用户拖或挥,正在水平、垂直或朝任何方向移动。

 

originX :real

内容的起始的X坐标。它总是反映内容左上角的坐标,不管内容的布局方向是怎样的。它通常是(0,0)。注意ListView和GridView可以有任意的起源,这是由于具像尺寸的变化或插入删除一个可视的单元。

 

originY :real

内容的起始的X坐标。它总是反映内容左上角的坐标,不管内容的布局方向是怎样的。它通常是(0,0)。注意ListView和GridView可以有任意的起源,这是由于具像尺寸的变化或插入删除一个可视的单元。

 

pixelAligned: bool

contentX和contentY对齐到像素(true)或亚像素(false)。

打开pixelAligned能用参照边优化静止移动的内容。参照物诸如一像素宽的线,文本或矢量图。关闭pixelAligned可用于优化动画质量。默认为假。注意这不是让A内容和B内容对齐。

 

pressDelay :int

按动作从Flickable交付给子组件的延迟时间。这是有用的。挥和拖动都起源于鼠标按下或触摸屏触摸。而该行为如果直接交付给子组件,会产生不良影响。因为用户可能只想挥,而不是点击。所以当用户在超时前,将点击变成拖或挥的动作,点击就不会交付给子。如果在超时之前,按钮被释放,那么点击和释放都交付给子组件。

注意对于嵌套的Flickables的pressDelay属性。外层的Flickables的该属性被内层的覆盖。如果拖动超出了平台的阈值,按事件将不管这个属性设置值,直接被发射。

同时参阅QStyleHints。

 

rebound :Transition

这是一个过渡,用于组件实例回到flickable边界内的动画。当拖或挥内容超出flickable的边界或调用returnToBounds()时,这个过渡被触发。

importQtQuick 2.0

 

Flickable {

    width: 150; height: 150

    contentWidth: 300; contentHeight: 300

 

    rebound: Transition {

        NumberAnimation {

            properties: "x,y"

            duration: 1000

            easing.type: Easing.OutBounce

        }

    }

 

    Rectangle {

        width: 300; height: 300

        gradient: Gradient {

            GradientStop { position: 0.0;color: "lightsteelblue" }

            GradientStop { position: 1.0;color: "blue" }

        }

    }

}

当上面的视图被挥出边界,它将用指定的过渡返回到边界内。如果这个属性没有设置,默认过渡被应用。

 

rightMargin: real

右边保留的空间。

 

topMargin :real

顶部保留的空间。

 

verticalVelocity: real

沿着x轴和y周的瞬间移动速度,单位像素/秒。报告的速度是平滑的,以避免不稳定的输出。注意当视图有巨大的内容尺寸(是视图尺寸的10倍以上)。在连续挥的情形下,速度可以超过触摸滑过的速度。这允许用户快速通过巨大的内容。

 

visibleAreagroup

visibleArea.xPosition: real

visibleArea.widthRatio: real

visibleArea.yPosition: real

visibleArea.heightRatio: real

当前视图的位置和尺寸。这一般用于画scrollbar。通常,visibleArea.xPosition和visibleArea.widthRatio成对使用,visibleArea.yPosition和visibleArea.heightRatio成对使用。取值都在0.0到1.0之间。如果我们需要画一个水平的scrollbar,定义高为8像素。scrollbar的宽,就是整个视图的宽度。然后,我们需要在scrollbar中制作个滑块,用于表示当前视图是整个内容范围的哪一页。那么这个滑块的宽和位置如何确定。我们假设整个内容的宽度为100,单个视图的宽度为10。当前视图处于整个内容X轴的开始。那么,我们的滑块就应该在scrollbar的最左方,宽度应该是整个视图尺寸的十分之一。这就是我们需要显示的效果。此时,Flickable的visibleArea.xPosition为0.0,visibleArea.widthRatio的值为0.1。如果我们将视图移动到整个内容的第3页,此时visibleArea.xPosition为0.2,visibleArea.widthRatio的值为0.1。如果我们单个视图的宽度变为20,那么visibleArea.widthRatio的值变为0.2。

通过上面的说明,我们应该了解到visibleArea group就是当前视图相对整个内容,其尺寸的百分比和其位置的百分比。我们可以用这些数据,定义出我们需要设计的滑块的尺寸和位置。这个属性的使用方式如下面的代码:

Rectangle {

    width: 200; height: 200

 

    Flickable {

        id: flickable

        ...

    }

 

    Rectangle {

        id: scrollbar

        anchors.right: flickable.right

        y: flickable.visibleArea.yPosition *flickable.height

        width: 10

        height:flickable.visibleArea.heightRatio * flickable.height

        color: "black"

    }

}

 

SignalDocumentation

flickEnded()

当视图由于挥停止移动时,发射这个信号。

 

flickStarted()

当视图被挥时,发射这个信号。挥开始于鼠标或触摸在运动中释放时。

 

movementEnded()

由于用户交互,视图移动停止,发送这个信号。如果挥是生成的,这个信号将在挥停止发射,如果挥不是生成的,这个信号在用户停止拖发射。例如鼠标或触摸屏释放。

 

movementStarted()

由于用户交互导致视图移动时,发射这个信号。

 

MethodDocumentation

cancelFlick()

取消当前的挥。

 

flick(qrealxVelocity, qreal yVelocity)

用水平速度xVelocity和垂直速度yVelocity挥动内容。速度单位像素/秒

 

resizeContent(realwidth, real height, QPointF center)

用width、height和center改变内容的尺寸。这不是缩放Flickable的内容,紧紧只是重设contentWidth和contentHeight。调整内容尺寸可能导致子组件被定位到Flickable的边界之外,调用returnToBounds()可移动内容返回边界之内。

 

returnToBounds()

确保内容在边界之内。这用与在手动定位内容之后,确保内容在边界内。
  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: QML-QianWindow-V1版本界面是一款用户界面设计程序,它为开发人员提供了大量可自定义的UI组件,使得开发者可以轻松地创建美观、直观且易于使用的界面。QML-QianWindow-V1版本界面具有界面美观,易用性强以及可扩展性强的特点。该程序提供了多种UI组件如窗口、按钮、文本框、下拉框、进度条等等。每个组件都可以基于开发需求进行个性化设计,提高了程序的可读性和可维护性。 QML-QianWindow-V1版本界面的窗口设计功能令人称赞。用户可以定制窗口的样式、位置和大小等属性,使其符合自己的需求。同时,该程序支持类似IOS与Android风格的Tab、Panel、Dialog等视图控件,让应用的界面更具丰富性和交互性,提升用户体验。 此外,QML-QianWindow-V1版本界面可让用户通过实用的数据模型,快速地创建和管理表格和列表,包括多行、多列的表格和单选或多选列表,使得用户可以方便地处理大量数据。 总之,QML-QianWindow-V1版本界面通过提供易用性和可扩展性强的UI组件来简化界面设计过程,使得开发人员可以迅速开发出优秀的桌面应用程序界面,以满足用户高品质的界面需求。 ### 回答2: QML-Qianwindow-v1版本是一款基于QML语言开发的桌面应用程序,其主要特点是界面设计美观、简单易用,适用于多种应用场景。 该软件的主界面包含五个主要区域:侧边栏、消息中心、主视图、小部件和设置菜单。 侧边栏主要用于导航,其中包含主要的应用程序和功能,使用户可以轻松地进入不同的模块。 消息中心用于显示来自其他应用程序的通知,例如电子邮件或要完成的任务。 主视图是QML-Qianwindow-v1的核心区域,其中包含常见的功能和工具,例如打开的文件、书签和搜索栏。 小部件区域用于显示用户选择的小部件,例如天气预报和日历。 设置菜单区域包含应用程序的设置菜单,用户可以在此处更改应用程序的选项、主题和常规设置。 总体来说,QML-Qianwindow-v1版本的界面设计非常简洁,用户友好,易于使用。它增强了用户的生产力和效率,为用户提供了一种令人愉悦的使用体验。 ### 回答3: QML-QianWindow-v1是一种基于Qt QML开发的简单易用的窗口界面库。其设计风格简洁明了,适用于各种桌面应用开发。 该库主要由三个部分组成:Title Bar、Main Body和Sidebar。其中,Title Bar是窗口的标题栏,可以自定义标题、图标、按钮、菜单等。Main Body是页面的主体内容,可以显示各种控件、窗口和布局。Sidebar是侧边栏,可以显示常用的菜单、工具、快捷方式等。 在QML-QianWindow-v1中,可以使用QianWindow来创建窗口。QianWindow提供了常用的窗口操作方法,例如最小化、最大化、关闭等。同时,该库还提供了很多常用的QML组件,例如按钮、文本框、下拉框、列表框等,这些组件可以方便快捷地进行页面设计。此外,在QML-QianWindow-v1中还支持自定义样式,可以根据需要修改组件的颜色、形状、大小等。 QML-QianWindow-v1的界面设计风格简洁明了,同时具有一定的美观度。尤其是Title Bar部分的设计非常灵活,可以根据需要自由定制。Main Body部分支持多种布局方式,可以满足不同页面设计的需求。Sidebar部分则提供了丰富的快捷操作方式,提高了用户的使用效率。 总的来说,QML-QianWindow-v1是一款非常实用的界面库,可以方便快捷地进行桌面应用开发。无论是初学者还是有经验的开发者,都可以轻松使用该库进行界面设计。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值