Есть у меня приложение, которое состоит из страниц. Страницы оформлены в виде типов Component. Страницы объединены в StackView, через него я их и переключаю.
Есть страница fileSelectDialogComponent, которая представляет из себя самодельный виджет выбора файла:
    // Объединение страниц интерфейса в структуру StackView для возможности переключения между ними
    StackView {
        id: stackView
        // Окно с основным меню
        Component {
            id: mainMenuStackComponent
            MainMenu {
                id: mainMenu
                anchors.fill: parent
                enabled: Stack.status === Stack.Active
            }
        }
...
        // Страница с виджетом выбора файла
        Component {
            id: fileSelectDialogComponent
            FileSelect {
                id: fileSelectDialog
                anchors.fill: parent
                enabled: Stack.status === Stack.Active
            }
        }
Вызывается эта страница так:
    // Выбор файла
    Connections {
        target: fileSelectButton
        onClicked: stackView.push( fileSelectDialogComponent )
    }
Вопрос в том, каким образом передать имя выбранного файла из страницы fileSelectDialogComponent в страницу mainMenuStackComponent. Причем предать это дело локально, а не через глобальный объект.
Проблема в том, что тип Component - это такой странный тип, в котором нельзя создавать свойства. Если я сразу после строки «id: fileSelectDialogComponent» попробую написать:
property alias fileSelectDialog: fileSelectDialog
чтобы «вытащить наружу» виджет FileSelect, то будет ошибка:
qrc:/qmlCode/main.qml:96 Component objects cannot declare new properties.
Так же я не могу достучаться до mainMenu, потому что он находится внутри mainMenuStackComponent, и я так же не могу этот mainMenu вытащить наружу, и не могу в него засунуть имя выбранного файла.
Так же невозможно соединить сигнал-слот так, чтобы сигнал испустился в одном компоненте (выбора файла), и был пойман в слоте компонента, который тоже есть в стеке (основное меню). Неозможно потому, что невозможно связать сигнал-слот, потому что внутрь компонента невозможно влезть, а сам компонент не дает возмжности вывести объекты или их свойства наружу.
Вот. Вопрос: как мне все-таки пробросить данные из одного компонента в другой? Неужели придется делать через глобальную переменную?


