Qt Reference Documentation

QML Flickable Element

The Flickable item provides a surface that can be "flicked". More...

Inherits Item

Inherited by GridView and ListView.

  • List of all members, including inherited members
  • Properties


    Detailed Description

    Flickable places its children on a surface that can be dragged and flicked.

     import Qt 4.7
     Flickable {
         width: 200; height: 200
         contentWidth: image.width; contentHeight: image.height
         Image { id: image; source: "bigImage.png" }

    Flickable does not automatically clip its contents. If it is not full-screen it is likely that clip should be set to true.

    Note: Due to an implementation detail, items placed inside a Flickable cannot anchor to it by id. Use parent instead.

    Property Documentation

    read-onlyatXBeginning : bool

    read-onlyatXEnd : bool

    read-onlyatYBeginning : bool

    read-onlyatYEnd : bool

    These properties are true if the flickable view is positioned at the beginning, or end respecively.

    boundsBehavior : enumeration

    This property holds whether the surface may be dragged beyond the Fickable's boundaries, or overshoot the Flickable's boundaries when flicked.

    This enables the feeling that the edges of the view are soft, rather than a hard physical boundary.

    The boundsBehavior can be one of:

    • Flickable.StopAtBounds - the contents can not be dragged beyond the boundary of the flickable, and flicks will not overshoot.
    • Flickable.DragOverBounds - the contents can be dragged beyond the boundary of the Flickable, but flicks will not overshoot.
    • Flickable.DragAndOvershootBounds (default) - the contents can be dragged beyond the boundary of the Flickable, and can overshoot the boundary when flicked.

    read-onlycontentItem : Item

    The internal item that contains the Items to be moved in the Flickable.

    Items declared as children of a Flickable are automatically parented to the Flickable's contentItem.

    Items created dynamically need to be explicitly parented to the contentItem:

     Flickable {
         id: myFlickable
         function addItem(file) {
             var component = Qt.createComponent(file)

    contentWidth : int

    contentHeight : int

    The dimensions of the content (the surface controlled by Flickable). Typically this should be set to the combined size of the items placed in the Flickable. Note this can be set automatically using childrenRect.width and childrenRect.height. For example:

     Flickable {
         width: 320; height: 480
         contentWidth: childrenRect.width; contentHeight: childrenRect.height
         Image { id: image; source: "bigImage.png" }

    contentX : int

    contentY : int

    These properties hold the surface coordinate currently at the top-left corner of the Flickable. For example, if you flick an image up 100 pixels, contentY will be 100.

    flickDeceleration : real

    This property holds the rate at which a flick will decelerate.

    The default is 500.

    flickableDirection : enumeration

    This property determines which directions the view can be flicked.

    • Flickable.AutoFlickDirection (default) - allows flicking vertically if the contentHeight is not equal to the height of the Flickable. Allows flicking horizontally if the contentWidth is not equal to the width of the Flickable.
    • Flickable.HorizontalFlick - allows flicking horizontally.
    • Flickable.VerticalFlick - allows flicking vertically.
    • Flickable.HorizontalAndVerticalFlick - allows flicking in both directions.

    read-onlyflicking : bool

    read-onlyflickingHorizontally : bool

    read-onlyflickingVertically : bool

    These properties hold whether the view is currently moving horizontally or vertically due to the user flicking the view.

    read-onlyhorizontalVelocity : real

    read-onlyverticalVelocity : real

    The instantaneous velocity of movement along the x and y axes, in pixels/sec.

    The reported velocity is smoothed to avoid erratic output.

    interactive : bool

    This property holds whether the user can interact with the Flickable. A user cannot drag or flick a Flickable that is not interactive.

    This property is useful for temporarily disabling flicking. This allows special interaction with Flickable's children: for example, you might want to freeze a flickable map while scrolling through a pop-up dialog that is a child of the Flickable.

    maximumFlickVelocity : real

    This property holds the maximum velocity that the user can flick the view in pixels/second.

    The default is 2000 pixels/s

    read-onlymoving : bool

    read-onlymovingHorizontally : bool

    read-onlymovingVertically : bool

    These properties hold whether the view is currently moving horizontally or vertically due to the user either dragging or flicking the view.

    pressDelay : int

    This property holds the time to delay (ms) delivering a press to children of the Flickable. This can be useful where reacting to a press before a flicking action has undesirable effects.

    If the flickable is dragged/flicked before the delay times out the press event will not be delivered. If the button is released within the timeout, both the press and release will be delivered.

    read-onlyvisibleArea.xPosition : real

    read-onlyvisibleArea.widthRatio : real

    read-onlyvisibleArea.yPosition : real

    read-onlyvisibleArea.heightRatio : real

    These properties describe the position and size of the currently viewed area. The size is defined as the percentage of the full view currently visible, scaled to 0.0 - 1.0. The page position is usually in the range 0.0 (beginning) to 1.0 minus size ratio (end), i.e. yPosition is in the range 0.0 to 1.0-heightRatio. However, it is possible for the contents to be dragged outside of the normal range, resulting in the page positions also being outside the normal range.

    These properties are typically used to draw a scrollbar. For example:

     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"

    See also scrollbar example.

    Signal Documentation

    Flickable::onFlickEnded ()

    This handler is called when the view stops moving due to a flick.

    Flickable::onFlickStarted ()

    This handler is called when the view is flicked. A flick starts from the point that the mouse or touch is released, while still in motion.

    Flickable::onMovementEnded ()

    This handler is called when the view stops moving due to user interaction. If a flick was generated, this handler will be triggered once the flick stops. If a flick was not generated, the handler will be triggered when the user stops dragging - i.e. a mouse or touch release.

    Flickable::onMovementStarted ()

    This handler is called when the view begins moving due to user interaction.


    Thank you for giving your feedback.

    Make sure it is related to this specific page. For more general bugs and requests, please use the Qt Bug Tracker.

    [0]; s.parentNode.insertBefore(ga, s); })();