如何在 QML 中处理来自父 Flickable 的 gridview contentY 、Y 位置

杰古

我在 Flickable 中有一个 backGroundList 和顶部 gridview。

我想要处理 gridview contentY ,来自父 Flickable 的 Y 位置,当我将 gridview 高度指定为内容高度时它正在工作,但由于内存问题,我不想在之前创建项目。

代码:

Flickable {
            id: mainFlickable
            width: 1920
            height: 1080
            contentHeight: gridView.contentHeight + 660 + 140 // topmargin + bottom margin

            ListView {
                id:backGroundList
                width: 1920
                height: 1080
                y: mainFlickable.contentY
                orientation: ListView.Horizontal

                MouseArea {
                    id: myMA12
                    anchors.fill: parent
                    hoverEnabled: true
                }
            }

            GridView {
                id: gridView
                objectName: "gridView"

                width: 1920
                height: 1080



                cellWidth: 372
                cellHeight: 290

                interactive: false
                 y: {
                    if (mainFlickable.contentY > 660)
                        return 660 + (mainFlickable.contentY - 660)
                    else
                        return 660
                }

                contentY: {
                    if (mainFlickable.contentY > 660){
                        return (mainFlickable.contentY - 660)
                    }
                    else {
                        return 0
                    }
                }

                delegate: Rectangle {
                    width: 352
                    height: 270
                    color: "blue"
                    opacity: 0.5

                    Text {
                        text: index
                        anchors.centerIn: parent
                    }
                }
                model:100
                anchors {
                    left: parent.left
                    leftMargin: 30
                    right: parent.right
                    rightMargin: 30
                }
            }
}

它没有按预期工作。当我更新 Y 值时 ContentY 自动更新为零

约束:Qt5.9.0

有人可以帮助我吗?

真皮

如果我理解正确的话,您希望将两个...View放在另一个之上。当其中一个弹到最后时,您希望将其View从窗口弹出,第二个出现并开始轻弹。

在我看来,这不是完全可以通过Flickable嵌套其他两个来实现的。

通过使用Flickable与它们同级的a 很容易实现在我的示例代码中,我使用了两个 Flickable。一个用于控制contentY- 属性,另一个负责在两个Views 之间滚动后者可以通过使用Item替代来轻松、更有效地解决

Window {
    id: rootWin
    width: 800; height: 600; visible: true

    Flickable {
        id: flck
        anchors.fill: parent
        contentHeight: lv1.height + lv2.height
        interactive: false
        contentY: Math.min(Math.max(0, mainFlick.contentY - lv1.contentHeight + lv1.height), contentHeight - height)

        ListView {
            id: lv1
            height: rootWin.height
            width: 100
            model: 90
            delegate: Rectangle {
                border.width: 1
                width: 100
                height: 50
                Text {
                    anchors.centerIn: parent
                    text: index
                }
            }
            interactive: false
            contentY: Math.min(mainFlick.contentY, contentHeight - height)
            onContentYChanged: console.log(contentY, contentHeight, height)
        }
        ListView {
            id: lv2
            height: rootWin.height
            anchors.top: lv1.bottom
            width: 100
            model: 90
            delegate: Rectangle {
                border.width: 1
                width: 100
                height: 50
                Text {
                    anchors.centerIn: parent
                    text: index
                }
            }
            interactive: false
            contentY: Math.min(Math.max(0, mainFlick.contentY - lv1.contentHeight), contentHeight - height)
        }
    }
    Flickable {
        id: mainFlick
        anchors.fill: parent
        contentHeight: lv1.contentHeight + lv2.contentHeight
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在QML语言中禁用Gridview / Listview的Flickable

来自分类Dev

如何在QML中拖动/滑动元素而不更改其x,y位置?

来自分类Dev

QML - 如何使用 GridView::itemAt(real x, real y)?

来自分类Dev

如何在 QML 中显示文件中的位置

来自分类Dev

如何在 QML 的 gridview 顶部添加文本?

来自分类Dev

使用 Slider QML 移动 Flickable/ListView

来自分类Dev

在 QML 中单击时如何在 GridView 中显示所选图像的较大版本

来自分类Dev

如何从 GridView 获取位置

来自分类Dev

如何滚动到Flickable的Repeater中的最后一项

来自分类Dev

如何在jQuery中查找空字段的位置(x,y)

来自分类Dev

如何在 UITextView 中获取 NSRange 的 x,y 位置

来自分类Dev

如何在Windows 8 Metro App中获取GridView.Selected项的滚动位置

来自分类Dev

如何预测在QML中捕捉轻弹的好位置

来自分类Dev

QML - 如何适应和对齐 GridView 的项目?

来自分类Dev

如何知道在asp.net gridView中单击按钮的位置

来自分类Dev

如何在GridView中将图像位置设置为固定

来自分类Dev

QML如何获得装载机的位置

来自分类Dev

来自GridView的C ++类的Qt / QML设置属性

来自分类Dev

来自GridView的C ++类的Qt / QML设置属性

来自分类Dev

QML鼠标在MouseArea中的绝对位置

来自分类Dev

在 WebEngineView qml 中获取光标位置

来自分类Dev

如何在jquery中获取$('body')。children('input [type =“ text”]')中每个元素的位置(x,y)

来自分类Dev

如何在目标 c 中的 AVPlayerLayer 中获得 AVPlayer y 的位置、高度、宽度

来自分类Dev

如何在d3 sankey插件中强制一个分支的y位置?

来自分类Dev

如何在交互式绘图(Python)中获得用鼠标指向的(x,y)位置?

来自分类Dev

如何在Phaser 3中将Sprite的X和Y位置用于“翻转”物理?

来自分类Dev

如何在单击时获得表格中 CELL 的 X 和 Y 位置?

来自分类Dev

如何在QML中创建延迟功能?

来自分类Dev

如何在QML中播放视频?

Related 相关文章

  1. 1

    如何在QML语言中禁用Gridview / Listview的Flickable

  2. 2

    如何在QML中拖动/滑动元素而不更改其x,y位置?

  3. 3

    QML - 如何使用 GridView::itemAt(real x, real y)?

  4. 4

    如何在 QML 中显示文件中的位置

  5. 5

    如何在 QML 的 gridview 顶部添加文本?

  6. 6

    使用 Slider QML 移动 Flickable/ListView

  7. 7

    在 QML 中单击时如何在 GridView 中显示所选图像的较大版本

  8. 8

    如何从 GridView 获取位置

  9. 9

    如何滚动到Flickable的Repeater中的最后一项

  10. 10

    如何在jQuery中查找空字段的位置(x,y)

  11. 11

    如何在 UITextView 中获取 NSRange 的 x,y 位置

  12. 12

    如何在Windows 8 Metro App中获取GridView.Selected项的滚动位置

  13. 13

    如何预测在QML中捕捉轻弹的好位置

  14. 14

    QML - 如何适应和对齐 GridView 的项目?

  15. 15

    如何知道在asp.net gridView中单击按钮的位置

  16. 16

    如何在GridView中将图像位置设置为固定

  17. 17

    QML如何获得装载机的位置

  18. 18

    来自GridView的C ++类的Qt / QML设置属性

  19. 19

    来自GridView的C ++类的Qt / QML设置属性

  20. 20

    QML鼠标在MouseArea中的绝对位置

  21. 21

    在 WebEngineView qml 中获取光标位置

  22. 22

    如何在jquery中获取$('body')。children('input [type =“ text”]')中每个元素的位置(x,y)

  23. 23

    如何在目标 c 中的 AVPlayerLayer 中获得 AVPlayer y 的位置、高度、宽度

  24. 24

    如何在d3 sankey插件中强制一个分支的y位置?

  25. 25

    如何在交互式绘图(Python)中获得用鼠标指向的(x,y)位置?

  26. 26

    如何在Phaser 3中将Sprite的X和Y位置用于“翻转”物理?

  27. 27

    如何在单击时获得表格中 CELL 的 X 和 Y 位置?

  28. 28

    如何在QML中创建延迟功能?

  29. 29

    如何在QML中播放视频?

热门标签

归档