Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/127.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在qml树视图中移动项目_C++_Qt_Treeview_Qml_Qtquick2 - Fatal编程技术网

C++ 在qml树视图中移动项目

C++ 在qml树视图中移动项目,c++,qt,treeview,qml,qtquick2,C++,Qt,Treeview,Qml,Qtquick2,我通过setContextProperty将QtQuickTreeView连接到我的QAbstractItemModel,它运行良好。 现在,我希望能够通过上下拖动项目来更改项目的顺序(在视图和模型中)。我已经创建了DropArea DropArea { anchors { fill: parent; margins: 10 } onEntered: { // ??? } } 但我不确定如何在qml中实现迁移。在qwidg

我通过setContextProperty将QtQuickTreeView连接到我的QAbstractItemModel,它运行良好。 现在,我希望能够通过上下拖动项目来更改项目的顺序(在视图和模型中)。我已经创建了DropArea

DropArea {
        anchors { fill: parent; margins: 10 }

        onEntered: {
           // ???
        }
}

但我不确定如何在qml中实现迁移。在qwidget方法中,它由removeRows/insertRows处理。qt quick的正确方法是什么

正确的方法是使用模型并移动项目,或者将项目移除/插入到新位置。由于这些函数没有直接公开给QML,所以您必须通过包装器槽公开它们,例如在您的模型中


当您修改源模型时,视图将自动调整以反映更改。

如何获得上一个和新的位置?@Amplier-您可以使用视图的
QModelIndex索引(int x,int y)
模型,分别用于拖动源和拖放目标。“索引”是获取“从”和“到”索引的唯一方法吗?