我在 QtCreator 输出中收到此消息:
file:///C:/.../foo.qml:428:5: QML PopupWarning: Binding loop detected for property "implicitHeight":
qrc:/qt-project.org/imports/QtQuick/Controls/FluentWinUI3/Dialog.qml:16:5
“PopupWarning.qml”:
import QtQuick
import QtQuick.Controls
Dialog {
parent: Overlay.overlay
property alias text : dialogText.text
anchors.centerIn: parent
width: parent.width/2
dim: true
modal: true
//implicitHeight: dialogText.height
Text {
id: dialogText
width: parent.width
font.pointSize: 15
}
}
问题是我无法指定确切的高度,因为对话框内的文本可能有不同的长度。与标题相同。此外,标准按钮可能存在也可能不存在。我想保持对话框的大小尽可能小。该代码有效,但我想阻止所有警告。
问题:在这种情况下有没有办法计算对话框/弹出窗口的高度?
我找到了一种计算我的高度的方法:
height: (standardButtons != Dialog.NoButton) ? header.height + footer.height + dialogText.height + 35 : header.height + dialogText.height + 35
35 的值来自此等式(当您未指定对话框高度时):
Component.onCompleted: console.log(height - dialogText.height)
即使我改变字体大小,视觉上看起来也完全一样