gpt4 book ai didi

qt - 如何阻止 QML 项目被淘汰或其父项的边界

转载 作者:行者123 更新时间:2023-12-05 00:48:50 25 4
gpt4 key购买 nike

我有以下代码允许在应用程序窗口上平移图像

代码:

import QtQuick 2.9
import QtQuick.Window 2.2
import QtQuick.Controls 2.2

ApplicationWindow {
id: app
visible: true
title: qsTr("Test panning an Image")

width: 700
height: 700

Image {
id: my_image_item
source: "http://doc.qt.io/qt-5/images/declarative-qtlogo.png"
MouseArea{
anchors.fill: parent
drag.target: my_image_item
drag.axis: Drag.XAndYAxis
}
}
}

目标:
我想阻止图像被拖动/平移到其父级之外。

基本上我不想让 my_image_item 被移到一个位置:

  • my_image_item 的右边缘位于其父级左边缘的左侧,
  • my_image_item 的左边缘位于其父项右边缘的右侧
  • my_image_item 的顶部边缘位于其父级底部边缘的下方
  • my_image_item 的底部边缘位于其父级顶部边缘的上方

主要问题:
当用户拖动 my_image_item 时,如何将 my_image_item 的移动限制在其父级的边缘内?

次要问题:(如果回答很好):
限制 my_image_item 移动的 item 需要严格地是它的 parent?或者它也可能是另一个不是其父项的项目? (至少一个共享一个共同的 QML 父级)

最佳答案

您是否尝试过使用 drag.maximumX/drag.minimumX

http://doc.qt.io/qt-5/qml-qtquick-mousearea.html#drag.minimumX-prop

Image {
id: my_image_item
source: "http://doc.qt.io/qt-5/images/declarative-qtlogo.png"
MouseArea{
anchors.fill: parent
drag.target: my_image_item
drag.axis: Drag.XAndYAxis
drag.minimumX: my_image_item.x
drag.maximumX: my_image_item.right // my_image_item.x + width ???
drag.minimumY: my_image_item.y
drag.maximumY: my_image_item.bottom // my_image_item.y + height ???
}
}

关于qt - 如何阻止 QML 项目被淘汰或其父项的边界,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48764702/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com