Как правильно всплыть и изменить размер диалога из другого файла.qml

Изучение qml и попытка разделить главное окно и настройки в разных файлах. У меня есть файл SettingsView.qml с простым диалогом и файл main.qml, где я вызываю меню и вызываю всплывающее окно с настройками. Когда у меня был диалог в main.qml, все было в порядке, и он корректно изменял размер всего окна. Но после того, как я переместил его в другой файл, поведение изменилось. Теперь также получаю сообщение: "refSettingsDialog не определен". Буду благодарен за любые советы.

upd: закрыто. Нет необходимости в свойствах здесь и т. Д. Только основы. И не называйте идентификатор из другого файла. По крайней мере, я так понимаю, сейчас

SettingsView.qml

Dialog{
    id: settingsDialog
    modal: true
    focus: true
    title: "Settings"

    standardButtons: Dialog.Ok | Dialog.Cancel
    onAccepted: {
        settingsDialog.close()
    }
    onRejected: {
        settingsDialog.close()
    }
}

main.qml

ApplicationWindow {
    visible: true
    id: screen
    property alias mainScreen: screen
    width: 640
    height: 480
    property alias screenWidth: screen.width
    property alias screenHeight: screen.height
    title: qsTr("McdtViewer")
    Material.theme: Material.Dark
    Material.accent: Material.Yellow

    SystemPalette { id: activePalette  }

    //toolbar
    header: ToolBar {
        RowLayout {
            spacing: 20
            anchors.fill: parent

            ToolButton {
                icon.name: contentSwiper.currentIndex === 1 ? "Back" : "пустой"
                onClicked:  {
                    if (contentSwiper.currentIndex === 1){
                        contentSwiper.pop()
                    }
                }
            }

            Label {
                id: titleLabel
                text: contentSwiper.currentIndex === 0? "ExpWatcher": "ExpView"
                font.pixelSize: 20
                elide: Label.ElideRight
                horizontalAlignment: Qt.AlignHCenter
                verticalAlignment: Qt.AlignVCenter
                Layout.fillWidth: true
            }
            ToolButton {
                icon.name: "menu"
                onClicked: optionsMenu.open()

                Menu {
                    id: optionsMenu
                    x: parent.width - width
                    transformOrigin: Menu.TopRight

                    MenuItem {
                        text: "Settings"
                        //calling the instance of settingView which we declared in the bottom
                        onTriggered: {
                             settingsView.open()
                        }
                    }
                }
            }
        }
    }

    }
    // making instance of settingsDialog here so the width will be calculated properly.
    SettingsView{
        id: settingsView
        x: Math.round((screenWidth - width) / 2)
        y: Math.round(screenHeight / 6)
        width: Math.round(Math.min(screenWidth, screenHeight) / 3 * 2)
    }
}

0 ответов

Другие вопросы по тегам