QML:检测到属性“implicitHeight”的绑定循环:

问题描述 投票:0回答:1

我在 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
    }
}

问题是我无法指定确切的高度,因为对话框内的文本可能有不同的长度。与标题相同。此外,标准按钮可能存在也可能不存在。我想保持对话框的大小尽可能小。该代码有效,但我想阻止所有警告。

问题:在这种情况下有没有办法计算对话框/弹出窗口的高度?

qt qml
1个回答
0
投票

我找到了一种计算我的高度的方法:

height: (standardButtons != Dialog.NoButton) ? header.height + footer.height + dialogText.height + 35 : header.height + dialogText.height + 35

35 的值来自此等式(当您未指定对话框高度时):

Component.onCompleted: console.log(height - dialogText.height)

即使我改变字体大小,视觉上看起来也完全一样

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.