无法锚定到不是父项或同级 QML QtQuick 的项目

Posted

技术标签:

【中文标题】无法锚定到不是父项或同级 QML QtQuick 的项目【英文标题】:Cannot anchor to an item that isn't a parent or sibling QML QtQuick 【发布时间】:2016-10-19 10:32:18 【问题描述】:

我正在使用 QML 开发一个 Python 桌面应用程序。

我的 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 矩形:无法锚定到不是父项或兄弟项的项目”的错误。在我正在做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】:
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.
    

正如错误消息所述:您不能锚定到除了您的父母之外的“祖先”。您也可以锚定到兄弟姐妹。但对他们的孩子,对你的孩子,对你的任何“祖父母”,叔叔或阿姨都不行;-)

【讨论】:

以上是关于无法锚定到不是父项或同级 QML QtQuick 的项目的主要内容,如果未能解决你的问题,请参考以下文章

如何将对话框锚定到listview qt qml中的按钮

QML改变项目的高度相对于其下方项目的高度变化

将自定义 UIView 锚定到相对于屏幕大小的屏幕底部

Vue.js 锚定到同一组件内的 div

如何将浮动操作按钮锚定到App ToolBar,就像在指南图像中一样?

将 ImageView 锚定到折叠工具栏