首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何拖动qquickwidget?

如何拖动qquickwidget?
EN

Stack Overflow用户
提问于 2015-08-23 15:11:09
回答 1查看 176关注 0票数 0

我在主窗口里有一个QQuickWidget。这似乎是可行的,然而,当它被拖拽时,它会剧烈摇晃。

代码语言:javascript
复制
//main.qml
Rectangle{
      id: root
      property point dragStart
      signal moved(point offset)

      MouseArea{
          id: dragArea
          anchors.fill: parent

          onPressed: root.dragStart = Qt.point(dragArea.mouseX,dragArea.mouseY)
          onMouseXChanged: move()
          onMouseYChanged: move()
          function move(){
                var offset = Qt.point(dragArea.mouseX-root.dragStart.x, dragArea.mouseY-root.dragStart.y)
                root.moved(offset)
                console.log(offset)
          }
      }
}
//MainWindow.cpp
void MainWindow::moveQml(QPointF offset){
    ui->quickWidget->move(ui->quickWidget->pos()+offset.toPoint());
}

下面是调试输出,当我只拖到左下角时,这个点不应该是正数x:

qml: QPointF(6,2) qml: QPointF(6,2) qml: QPointF(-6,-1) qml: QPointF(-6,-1) qml: QPointF(5,1) qml: QPointF(5,1) qml: QPointF(-5,0) qml: QPointF(-5,0) qml: QPointF(4,0) qml: QPointF(4,0) qml: QPointF(-5,1) qml: QPointF(-5,1)

EN

回答 1

Stack Overflow用户

发布于 2015-08-23 15:23:11

哦,我明白了。在检查输出后,我知道出了什么问题。移动鼠标时,鼠标通常会更改其xy。所以move()将被执行两次。

代码语言:javascript
复制
onMouseXChanged: {
    var offset = Qt.point(dragArea.mouseX - root.dragStart.x, 0)
    root.moved(offset)
}

onMouseYChanged: {
    var offset = Qt.point(0, dragArea.mouseY - root.dragStart.y)
    root.moved(offset)
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32168168

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档