我正在开发一个运行于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 article和this question,但我仍然不明白如何处理QML中的尺寸调整。
答案 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
}
}