Невозможно привязать к элементу, который не является родительским или дочерним QML QtQuick

#qt #qml #qtquick2

#qт #qml #qtquick2 #qt

Вопрос:

Я работаю над настольным приложением Python, использующим QML.

У меня есть это в моем файле QML:

 SplitView {
    anchors.fill: parent
    orientation: Qt.Horizontal
    Rectangle {
        color: "#272822"
        id: cameraRectangle
        width: window.width / 2
        Item {
           //more stuff
        }
        Item {
            Rectangle {
                anchors.top: cameraRectangle.bottom
            }
        }
    }
    Rectangle {
      //Rectangle info.
    }
}
  

Я получаю сообщение об ошибке «QML Rectangle: не удается привязать к элементу, который не является родительским или родственным». На линии, где я делаю anchors.top: cameraRectangle.bottom. Я бы предположил, что внешний прямоугольник ЯВЛЯЕТСЯ родительским для внутреннего?

Я искал в Интернете, как здесь:http://doc.qt.io/qt-5/qtquick-visualcanvas-visualparent.html и они, кажется, ничего не делают по-другому?

Может ли это быть версией QtQuick, которую я использую?

Импорт выглядит следующим образом:

 import QtQuick 2.6
import QtQuick.Controls 2.0
import QtQuick.Controls 1.4
import QtQuick.Controls.Material 2.0
import QtQuick.Window 2.0
  

Я ценю вашу помощь.

Комментарии:

1. Поскольку вы заключили прямоугольник в элемент, родительским элементом является элемент. Переместите элемент, и он будет работать.

Ответ №1:

 SplitView {
    anchors.fill: parent
    orientation: Qt.Horizontal
    Rectangle {
        color: "#272822"
        id: cameraRectangle
        width: window.width / 2
        Item {
           //more stuff
        }
        Item {
            // The parent of this Item is 'cameraRectangle'
            // This Item will be the parent of the Rectangle
            // therefore the Rectangle can't anchor to the 'cameraRectangle'
            // anymore. As you are not doing anything with this Item
            // (so far?) anway, you can just delete it, and everything
            // will be fine.
            Rectangle {
                // The parent of this Rectangle is the Item that wraps it
                // and not the 'cameraRectangle'.
                anchors.top: cameraRectangle.bottom
            }
        }
    }
    Rectangle {
      //Rectangle info.
    }
}
  

Как указано в сообщении об ошибке: вы не можете привязать к «предкам», отличным от вашего родителя. Вы также можете привязаться к братьям и сестрам. Но ни их детям, ни вашим, и ни кому-либо из ваших «бабушек и дедушек», дядей или тетей 😉