Env: OS - победа 10 x86, qtcreator 4.6.1, mingw 5.3, qt 5.11
Создайте файл rect1.qml с помощью Rectangle.
import QtQuick 2.0
Rectangle {
width: 40
height: 40;
border.color: "blue"
color: "green";
width: childrenRect.width
height: childrenRect.height
property int sub_border: 1
property color item_color: "green"
property bool view_bounding_box: false
property int sub_border: 1
onView_bounding_boxChanged: {
root.border.width = root.view_bounding_box ? sub_border : 0
console.log("BaseContainer", root.view_bounding_box, root.border.color) }
}
В main.qml динамически создается компонент
Rectangle {
id: root
border.color: "blue"
border.width: 0
focus: true
property int edge_len: 20
property bool view_bounding_box: false
property var active_object
property var deactivate_objects:[]
function loadComponent () {
var component = Qt.createComponent("rect1.qml");
if (component .status === Component.Ready) {
active_object = component.createObject(root, {
"view_bounding_box": root.view_bounding_box });
}else if (component.status === Component.Error) {
console.log("error creating component");
console.log(component.errorString());
}
}
если я изменю ограничивающее свойство root.view_bounding_box - в сгенерированном экземпляре (active_object) обработчик сигнала вызываться не будет.
Если я вызываю метод «содержащий» active_object с аргументами Qt.point (active_object.x, active_object.y), ничего не происходит, как будто заглушка называется
var point = Qt.point(active_object.x, active_object.y)
for (var i = 0; i < deactivate_objects.length; i++) {
if (deactivate_objects[i].contains(point)) { // not worked
deactivate_objects.push(active_object)
loadComponent ()
return
}
}
if (!root.contains(point)) { // worked
deactivate_objects.push(active_object)
loadComponent ()
}
Цвет границы в active_objectis "зеленый", как цвет прямоугольника.
Это ошибка или я чего-то не понимаю в qml?