我有一个问题我一个人解决不了。我使用这个第三方库/框架- https://github.com/papyros/qml-material开发了一个UI。它的控制和布局是根据谷歌的指导方针开发的。问题是,当我在项目中使用FileDialog时,它在加载中定义的页面很慢,我得到以下消息:
file:///C:/.../QtQuick/Controls/ToolBar.qml:146:9: QML QQuickItem*: Binding loop detected for property "layoutHeight"
file:///C:/.../QtQuick/Dialogs/DefaultFileDialog.qml:407:9: QML ToolBar: Binding loop detected for property "implicitHeight"
file:///C:/.../QtQuick/Dialogs/DefaultFileDialog.qml:407:9: QML ToolBar: Binding loop detected for property "implicitHeight"
如果有人知道答案,那就太好了。
这个问题可以很容易地用GitHub项目中的 https://github.com/papyros/qml-material/tree/develop/demo中的演示来再现。只需在某个地方添加FileDialog,然后查看页面将如何加载,以及您将收到哪些消息.
使用的Qt版本: 5.12.6
发布于 2021-10-29 17:07:49
当将FileDialog
放在设置为asynchronous
加载的Loader
中时,这是一个已知的问题。下面是一个完整的示例,演示了这个问题:
import QtQuick.Window 2.12
import QtQuick.Dialogs 1.3
Window {
id: root
visible: true
width: 640
height: 480
Loader {
sourceComponent: FileDialog {}
asynchronous: true // change to false and ToolBar binding loop goes away
}
}
我注意到,您所引用的项目在main.qml中使用了异步加载器,因此这似乎导致了您的问题。见第243行:
Loader {
id: example
anchors.fill: parent
asynchronous: true
我找到了一个错误报告,但由于未解决而关闭了它。我对这个问题的理解是,错误只影响只有在操作系统特定的QFileDialog
不可用时才会出现的“备份”。来自文档
如果可能的话,FileDialog的实现将是一个平台文件对话框。如果这是不可能的,那么它将尝试实例化QFileDialog。
根据我的经验,在Windows和Mac上,绑定循环错误不会引起任何问题,可以忽略,因为OS文件对话框总是会出现。除了不使用asynchronous
标志之外,我还不认为这是一个可纠正的错误,因为它是一个Qt错误。
https://stackoverflow.com/questions/69611761
复制相似问题