Изменить URL после действия на другой странице

Имею 2 папки. В папках лежат 1 и 1 файл. Как я могу изменить URL-адрес 1 файла, используя второй файл?

ресурсы:

  • Папка 01
    • File_01.qml
  • Папка 02
    • Sheet_01.qml
  • main.qml

  • main.qml

    import bb.cascades 1.4
    import "Folder_01"
    import "Folder_02"
    TabbedPane {
        Menu.definition: MenuDefinition {
            actions: [
                ActionItem {
                    onTriggered: {
                        sheet_01.open()
                    }
                }
            ]
        }
        Tab {
            id: tab_01
            title: "Tab 01"
            File_01 {
            }
        }
        Tab {
            enabled: false
        }
        attachedObjects: [
            Sheet_01 {
                id: sheet_01
            }
        ]
    }
    

    File_01.qml

    import bb.cascades 1.4
    Page {
        titleBar: TitleBar {
            title: "File 01"
        }
        WebView {
            id: file_01_WebView
        }
    }
    

    Sheet_01.qml

    import bb.cascades 1.4
    import "asset:///Folder_01"
    Sheet {
        id: sheet_01
        Page {
            titleBar: TitleBar {
                title: "Sheet 01"
                dismissAction: ActionItem {
                    title: "Cancel"
                    onTriggered: {
                        sheet_01.close()
                        file_01_WebView.url = "http://google.com"
                    }
                }
            }
        }
    }
    

    У меня в файле "Sheet_01.qml" ошибка "file_01_WebView.url =" http://google.com "

    Стоит ли изучать PHP в 2026-2027 годах?
    Стоит ли изучать PHP в 2026-2027 годах?
    Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
    Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
    Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
    В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
    Приемы CSS-макетирования - floats и Flexbox
    Приемы CSS-макетирования - floats и Flexbox
    Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
    Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
    В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
    Концепция локализации и ее применение в приложениях React ⚡️
    Концепция локализации и ее применение в приложениях React ⚡️
    Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
    Пользовательский скаляр GraphQL
    Пользовательский скаляр GraphQL
    Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
    0
    0
    792
    2

    Ответы 2

    Здесь это обсуждалось много раз, и документация Qt довольно четко об этом говорит. Из-за ограничения объема Sheet_01 элемент ничего не знает об элементах вне компонента. Следуя декларативному стилю разработки, компонент должен сообщать об изменениях своего состояния, чтобы другие элементы могли на это отреагировать. Например:

    main.qml

    Item {
        id: root
        MyItem {
            id: item1
        }
    
        MyItem {
            id: item2
            onSomeEvent: item1.doSomeAction();
        }    
    }
    

    MyItem.qml

    Item {
        id: item
        signal someEvent();
        function doSomeAction() {
            console.info("action executed");
        }
        Component.onComplete: item.someEvent();
    }
    

    Здравствуйте, спасибо за ответ. Не могли бы вы написать полный код? А порядок папок? Большое спасибо.

    PepikVaio 12.12.2018 22:51

    Какой полный код? Приведенный выше код просто иллюстрирует идею. Если вам сложно понять этот пример, я бы посоветовал вам начать с Книга QML.

    folibis 13.12.2018 08:17

    Я счастлив. Я закончил руководство пользователя по этой проблеме для других людей. Это функциональная процедура.

    // main.qml
    import bb.cascades 1.4
    import "Folder_01"
    import "Folder_02"
    
    TabbedPane {
    
        Menu.definition: [
    
            MenuDefinition {
    
                actions: [
    
                    ActionItem {
    
                        onTriggered: {
                            sheet_01.open()
                        }
                    }
                ]
            }
        ]
    
        tabs: [
    
            Tab {
                title: "Tab 01"
    
                File_01 {
                    id: file_01
                }
            },
    
            Tab {
                enabled: false
            }
        ]
    
        attachedObjects: [
    
            Sheet_01 {
                id: sheet_01
    
                onSignal_From_Sheet: {
                    file_01.url = "http://google.cz"
                }
            }
        ]
    }
    
    // File_01.qml
    import bb.cascades 1.4
    
    Page {
        id: page1
    
        property alias url: file_01_WebView.url
    
        titleBar: TitleBar {
            title: "File 01"
        }
    
        WebView {
            id: file_01_WebView
        }
    }
    
    
    // Sheet_01.qml
    import bb.cascades 1.4
    
    Sheet {
        id: sheet_01
    
        signal signal_From_Sheet()
    
        Page {
    
            titleBar: TitleBar {
                title: "Sheet 01"
    
                dismissAction: ActionItem {
                    title: "Cancel"
    
                    onTriggered: {
                        signal_From_Sheet()
                        sheet_01.close()
                    }
                }
            }
        }
    }
    

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