我正在开发一个运行到QQuickWidget
的QT5.11.1 QML应用程序。调整大小模式设置为SizeRootObjectToView
。因此,每当我调整QMainWindow
大小时,我都会看到我的QML根对象也可以扩展。
内部我有一些锚定的图像以填补父母,并按预期进行缩放。相反,我有较小的图像或文本的问题,这些问题应保持相同的相对位置和大小。
我从比率为1:1的绝对位置和大小开始。示例:根项目的大小为1920x1080 px,我必须将其他项目(主要是图像和文本)放在给定的坐标中。
当根更改其大小时,所有元素都应遵循它。我尝试了:
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
)在我调整窗口大小时不会更改。但是它实际上调整了根元素的大小,因为任何锚定的项目也都会调整大小!我只有在最大化/最小化窗口时才能更改。
我读了这篇文章和这个问题,但我仍然不明白如何处理qml中的修复。
在测试中,它似乎是一个问题通过修改宽度和高度,它可以解决问题
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
}
}