在QML中缩放和定位

时间:2019-02-16 10:51:40

标签: qt resize qml qt5 scaling

我正在开发一个运行于QQuickWidget的Qt5.11.1 QML应用程序。调整大小模式设置为SizeRootObjectToView。因此,每当调整QMainWindow的大小时,我都会看到我的QML根对象也可以缩放。

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

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

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

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 articlethis question,但我仍然不明白如何处理QML中的尺寸调整。

1 个答案:

答案 0 :(得分:0)

在测试中,似乎是财产规模问题 通过修改宽度和高度可以解决问题

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
    }
}