实现的目标效果是在点击某个按钮后创建出一个可以移动被拖拽的标签,其实这是两个独立的东西,两个都很简单就不分开记录了。
可拖拽的标签Label
文件 MovableLabel.qml中
import QtQuick 2.12
import QtQuick.Controls 2.5
Label{
id: label
MouseArea {
cursorShape: Qt.DragMoveCursor
anchors.fill: parent
drag.target: label // 目标设置成父对象
drag.axis: Drag.XAndYAxis // x, y两个方向上都可以移动
}
}
动态创建组件
一般都要先有一个Component,构建Component的方式不知一种方式,我是参考Qt帮助文档中的方式,文件main.qml:
onClicked:{
// 构建Component
let component = Qt.createComponent("MovableLabel.qml")
if(component.status === Component.Ready){
// 创建对象, 对一个参数rect是父对象,花括号中的为对label的属性设置
component.createObject(rect, {text:text, font:font, color:color})
}
}