在布局管理的项目上检测到的锚点。这是未定义的行为;使用Layout.alignment代替

时间:2018-07-05 10:53:29

标签: qt qml

有一个QML ToolBar。我可以使用Qt 5.9 来构建/运行该应用程序,而不会出现任何错误。但是,当使用Qt 5.11 构建/运行应用程序时,我收到此错误:

  

QML EnableButton:在由布局管理的项目上检测到锚定。这是未定义的行为;改为使用 Layout.alignment

以上错误发生在工具栏代码中的ToolbarButton声明处:

ToolBar {
    id: mainToolBar
    anchors.fill: parent
    style: ToolBarStyle {
        padding.top: 0
        padding.bottom: 0
        padding.right: 0
        padding.left: 0
        background: Rectangle {
            implicitHeight: newButton.height
            color: editorContent.itemBackgroundColor
        }
    }

    RowLayout {
        spacing: 0

        ToolbarButton {
            id: newButton
            enabledIconSource: "images/new.png"
            tooltip: qsTr("New") + editorScene.emptyString
            onEnabledButtonClicked: editorContent.fileNew()
            Layout.alignment: Qt.AlignLeft
        }
        ToolbarButton {
            enabledIconSource: "images/load.png"
            tooltip: qsTr("Load (Ctrl + O)") + editorScene.emptyString
            onEnabledButtonClicked: editorContent.fileLoad()
            Layout.alignment: Qt.AlignLeft
        }
        // ...
        // ...

我在anchors代码中没有任何ToolbarButton,实际上,我在Layout.alignment代码中使用了ToolbarButton。我不明白为什么会引发这样的错误。


我要使用Qt 5.11构建的整个项目都在这里:

https://github.com/qt-labs/qt3d-editor

要解决该错误,我将anchors替换为Layout.alignment,但没有帮助。

1 个答案:

答案 0 :(得分:2)

anchorsToolbarButton实现中。在组件实现之外的某个地方引用通常不是一个好主意,尤其是进行任何锚定时。应该通过布局(例如工具栏)来完成。您的ToolbarButton不支持垂直工具栏。