qml 可移动(拖拽)的Label ,并且动态创建

实现的目标效果是在点击某个按钮后创建出一个可以移动被拖拽的标签,其实这是两个独立的东西,两个都很简单就不分开记录了。

可拖拽的标签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})
  }
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容