代码之家  ›  专栏  ›  技术社区  ›  Mark

qml中的缩放和定位

  •  0
  • Mark  · 技术社区  · 5 年前

    我正在开发一个qt5.11.1qml应用程序,它运行在 QQuickWidget . 调整大小模式设置为 SizeRootObjectToView . 因此,每当我调整 QMainWindow 我也看到了我的qml根对象。

    在内部,我有一些图像锚定以填充父对象,它们按预期缩放。相反,我对较小的图像或文本有问题,它们应该保持相同的相对位置和大小。

    当比率为1:1时,我从绝对位置和大小开始。示例:根项的大小为1920x1080px,我必须将其他项(主要是图像和文本)放置到给定的坐标。

    当根更改其大小时,所有元素都应跟随它。我试过这个:

    import QtQuick 2.11
    import QtQuick.Controls 2.4
    import QtGraphicalEffects 1.0
    
    Rectangle {
        id: root
        visible: true
        color: "black"
    
        property real ratio: root.width / 1920
    
        readonly property real x_CenterGauge: 502
        readonly property real y_CenterGauge: 489
    
        Image {
            x: x_CenterGauge * ratio
            y: y_CenterGauge * ratio
            scale: ratio
        }
    }
    

    但这不管用因为 root.width 财产(依次 ratio )当我调整窗口大小时不会改变。但它实际上调整了根元素的大小,因为任何锚定的项也将调整大小!只有当窗口最大化/最小化时,我才能得到更改。

    我读 this article this question ,但我仍然不明白如何在qml中处理大小调整。

    0 回复  |  直到 5 年前
        1
  •  0
  •   Skogandr    5 年前

    在测试中,属性规模似乎是个问题 它通过修改宽度和高度来解决问题

    Rectangle {
        id: root
        visible: true
        color: "black"
    
        property real ratio: root.width / 1920
    
        readonly property real x_CenterGauge: 202
        readonly property real y_CenterGauge: 489
    
        Image {
            x: root.x_CenterGauge * root.ratio
            y: root.y_CenterGauge * root.ratio
    
            width: implicitWidth * root.ratio
            height: implicitHeight * root.ratio
            //scale: ratio
        }
    }