Я занимаюсь разработкой приложения Qt5.11.1 QML, которое работает на QQuickWidget
.Режим изменения размера установлен на 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
) не изменяется при изменении размера окна.Но это на самом деле изменяет размер корневого элемента, потому что любой привязанный элемент тоже изменит размер!Я получаю изменение только в том случае, если окно развернуто или свернуто.
Я прочитал эту статью и этот вопрос , но я все еще не понимаю, как обращаться сизменение размера в QML.