позицию при изменении размера родителя? Имеется введу, что если я перетяну прямоугольник в середину, то при изменении размера окна он должен остаться в середине. Нарисовал себе на листочке, но почему-то оно не работает как хотелось бы. Пробовал ещё вариант с запоминанием % расстояния вроде delX = x/window.width, оно работало, но не достаточно точно.
import QtQuick 2.9
import QtQuick.Window 2.2
import QtQuick.Controls 2.3
Window {
visible: true
width: 640
height: 480
onWidthChanged: {
block.x -= block.previousWidth - width
block.previousWidth = width
}
onHeightChanged: {
block.y -= block.previousHeight - height
block.previousHeight = height
}
Rectangle {
id: block
color: "red"
width: 50
height:50
x: 100
y: 50
property int previousWidth: 0
property int previousHeight:0
Component.onCompleted: {
previousWidth = parent.width
previousHeight = parent.height
}
MouseArea {
anchors.fill: parent
drag.target: block
}
}
}
не совсем понял что нужно, но не думал попробовать с anchor'ами "поиграться"? в смыслe onPressed anchors = undefined, onReleased новые анчоры присваивать
Мне же все равно нужно просчитать новый отступ для якоря получается
к центру привязаться? https://doc.qt.io/qt-5/qtquick-positioning-anchors.html
Он писал что в центр лишь для примера. Насколько я понял он может куда и как угодно двигать объект внутри объекта, но при ресайзе что бы пропорции отступов сохранялись. Верно?
Центр был для примера. По задаче выходит так: есть 2 прямоугольника, 1 двигают как угодно через драг в пределах 2-го, 2-ой прямоугольник растягивают, и если не менять x,y 1-го, то он съедет со своей позиции
наверное подойдет считать отступы с зависимостью на размер родителя, хоть в процентах
Вот я как раз пробовал это сделать, через % получилось, но неточно в итоге двигалось (я так полагаю из-за неточностей работы с double), вот пытался через отнимание дельты высоты и ширины сделать в коде выше, и оно как-то вообще не туда двигается.
А почему бы не сделать квадрату где буква свойство типа border и выделять нужную тебе букву ? Зачем поверх всего этого пытаться вычислить бордюр и поверх рисовать?
Изображение для примера, не обязательно букву полностью выделять и изображение будет меняться
Обсуждают сегодня