Неверное представление редактора для QML в Qt Design Studio - PullRequest
0 голосов
/ 11 января 2020

Это Qt Design Studio, а не Qt Quick Designer, но это может быть то же самое.

Я сделал компонент,

PaneWithTitle.qml

Column {
    id: column
    Layout.alignment: Qt.AlignHCenter | Qt.AlignVCenter
    spacing: Style.paneTitleOffset

    property string title
    property alias inside: inner_space.sourceComponent

    DefaultText {
        text: qsTr(title)
    }

    Pane {
        id: pane

        background: Rectangle {
            color: "#283547"
            radius: Style.rectangleCornerRadius
        }

        Loader {
            id: inner_space
        }
    }
}

И Я использую его так:

PaneWithTitle {
    title: "Recovery"
    inside: ColumnLayout {
        id: rows

        TextFieldWithTitle {
            id: seed_input
            title: qsTr("Seed")
        }

        TextFieldWithTitle {
            id: password_input
            title: qsTr("Password")
        }

        RowLayout {
            id: columns

            Button {
                id: back_button
                text: qsTr("Back")
            }

            Button {
                id: confirm_button
                text: qsTr("Confirm")
            }
        }
    }
}

Когда я запускаю его, он отлично выглядит в Live Preview. Но внутри редактора размер фона панели равен 0.

Editor view does not match

Есть ли элегантное решение для этого?

1 Ответ

0 голосов
/ 13 января 2020

Трудно найти абсолютное решение для этого, похоже, что есть ошибка в иерархии элементов редактора форм, но вы можете хотя бы немного улучшить то, как это показано. Если вы можете, пожалуйста, отправьте вашу проблему в виде отчета об ошибке QDS .

. Вы можете удалить Loader, заменить Loader.sourceComponent на pane.contentItem и обернуть PaneWithTitle.qml контентом Item. Код будет выглядеть так:

Item {
    id: root
    Layout.alignment: Qt.AlignHCenter | Qt.AlignVCenter

    property string title
    property alias inside: pane.contentItem

    Column {
        id: column
        anchors.fill: parent
        spacing: Style.paneTitleOffset

        Text {
            text: qsTr(title)
        }

        Pane {
            id: pane

            background: Rectangle {
                color: "#283547"
                radius: Style.rectangleCornerRadius
            }
        }
    }
}
...