在视图之间拖放时,QML避免空格

时间:2018-03-21 15:16:15

标签: qt qml

我使用QtQuick's Drag and Drop example(Tiles部分)将列表中的切片(代表按钮)拖放到网格上,作为动态布局这些按钮的方法。

"删除" (即重新表示)列表中的图块,留下空白空间。我希望列表能够自动重组以缩小这一差距。是否可以使用示例中的方法,通过重新显示图块来完成拖放操作?或者我需要有两个模型(一个用于列表,一个用于网格)并在两个模型之间添加/删除拖动的项目?

感谢您的帮助!

见图片

更好地了解我的意思。

1 个答案:

答案 0 :(得分:1)

之所以会发生这种情况,是因为在示例中他们只是对磁贴的子级应用父级更改,因此空根Item仍保留在列中:

// DragTile.qml
Item {
    id: root
    // ...
    MouseArea {
        // ...
        drag.target: tile
        onReleased: parent = tile.Drag.target !== null ? tile.Drag.target : root
        Rectangle {
            id: tile
            // ...
        }
    }
}

如果您将父更改应用于根ItemColumn将自动重组:

onReleased: {
    if (tile.Drag.target) {
        root.parent = tile.Drag.target
        root.anchors.centerIn = root.parent
    }
}