有一个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
,但没有帮助。
答案 0 :(得分:2)
anchors
在ToolbarButton实现中。在组件实现之外的某个地方引用通常不是一个好主意,尤其是进行任何锚定时。应该通过布局(例如工具栏)来完成。您的ToolbarButton不支持垂直工具栏。