a
ayb25 февраля 2020 г. 5:33

WebView

Задам, очень тупой вопрос, Как мне передать в url на webview, которая находится на другой странице, и затем я мог вернуться задать url, и подгрузить другую страницу. Условно говоря всего две qml - страница с webview, и первая с кнопкой и текстовым полем.

Рекомендуем хостинг TIMEWEB
Рекомендуем хостинг TIMEWEB
Стабильный хостинг, на котором располагается социальная сеть EVILEG. Для проектов на Django рекомендуем VDS хостинг.

Вам это нравится? Поделитесь в социальных сетях!

14
Evgenii Legotckoi
  • 25 февраля 2020 г. 5:52
  • (ред.)

Добрый день.

Самый простой однооконный вариант реализуется так

import QtQuick 2.12
import QtQuick.Window 2.12
import QtWebView 1.13
import QtQuick.Controls 2.13

Window {
    visible: true
    width: 640
    height: 480
    title: qsTr("Hello World")

    TextField {
        id: textEdit
        anchors.left: parent.left
        anchors.top: parent.top
        anchors.right: button.left
    }

    Button {
        id: button
        text: "Go"
        anchors.top: parent.top
        anchors.right: parent.right

        onClicked: {
            webView.url = textEdit.text
        }
    }

    WebView {
        id: webView
        anchors.left: parent.left
        anchors.top: textEdit.bottom
        anchors.right: parent.right
        anchors.bottom: parent.bottom
    }
}

Результат выглядит так

Конкретно в вашем случае, если у вас два qml файла, нужно смотреть код, возможно нужно будет прописать alias`ы на нужные объекты, чтобы всё увязать друг с другом.

    a
    • 25 февраля 2020 г. 6:06
    • (ред.)

    Спасибо, кажется понял, почему у меня не работало.

      a
      • 25 февраля 2020 г. 7:16

      Вообщем когда все было на одной странице все работало, На двух нет(

        Evgenii Legotckoi
        • 25 февраля 2020 г. 7:17

        я не экстрасенс. нужно смотреть ваш код

          a
          • 25 февраля 2020 г. 7:17
          • (ред.)
          id: expressPage
              allowedOrientations: Orientation.All
          
              function setUrl(str) {
                  webView.url = str
              }
          
              SilicaWebView {
                  id: webView
                  // PullDownMenu and PushUpMenu must be declared in SilicaFlickable, SilicaListView or SilicaGridView
                  PullDownMenu {
                      MenuItem {
                          text: qsTr("Вернуться на welcome")
                          onClicked: {
                              pageStack.clear()
                              pageStack.push(Qt.resolvedUrl("Welcome.qml"))
                          }
                      }
                      MenuItem {
                          text: qsTr("Выход")
                          onClicked: {
                              Qt.quit()
                          }
                      }
                  }
                  anchors.fill: parent
          
                  onLoadingChanged: {
                      console.log(webView.url)
                      webView.update()
                  }
          
                  quickScrollAnimating: true
          
                  experimental.preferences.webGLEnabled: true
                  experimental.preferences.notificationsEnabled: true
                  experimental.preferences.dnsPrefetchEnabled: true
                  experimental.preferences.javascriptEnabled: true
              }
          

          Примерно как выглядит webview, может я что-то не дописал

            a
            • 25 февраля 2020 г. 7:23
            • (ред.)
            // To enable PullDownMenu, place our content in a SilicaFlickable
                SilicaListView {
                    id: flickId
                    anchors.fill: parent
            
                    // PullDownMenu and PushUpMenu must be declared in SilicaFlickable, SilicaListView or SilicaGridView
                    PullDownMenu {
                        MenuItem {
                            text: qsTr("Выход")
                            onClicked: {
                                webApp.setAddress("")
                                Qt.quit()
                            }
                        }
                    }
            
                    Column {
                        width: parent.width
                        spacing: Theme.paddingLarge
                        Label {
                            id: emptyLabel
                            height: mainPage.height / 3
                            width: parent.width
                        }
            
                        TextField {
                            id: textField
                            width: parent.width
            
                            horizontalAlignment: Text.AlignHCenter
                            anchors.horizontalCenter: parent.horizontalCenter
                            anchors.horizontalCenterOffset: Theme.horizontalPageMargin
                            placeholderText: qsTr("www.google.com")
                            validator: RegExpValidator { regExp: /^(https?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$/ }
                            onTextChanged: {
                                console.log(textField.text)
                            }
                        }
                        Button {
                            id: btnId
                            anchors.horizontalCenter: parent.horizontalCenter
                            text: "Send url"
                            onClicked: {
                                webApp.setUrl(textField.text)
                                pageStack.push(Qt.resolvedUrl("WebView.qml"))
                            }
                        }
                        Label {
                            id: orId
                            color: Theme.highlightBackgroundColor
                            anchors.horizontalCenter: parent.horizontalCenter
                            text: "or"
                        }
                        Button {
                            id: btnSettings
                            text: "Settings"
                            anchors.horizontalCenter: parent.horizontalCenter
                            onClicked: {
                                var urlPath = "http://" + initWeb.getAddress()
                                webApp.setUrl(urlPath)
                                pageStack.push(Qt.resolvedUrl("WebView.qml"))
                            }
                        }
            

            Это первая страница

              a
              • 25 февраля 2020 г. 7:24

              Функция getAddress, возвращает строку из qsettings, из плюсовой части.

                Evgenii Legotckoi
                • 25 февраля 2020 г. 7:41
                • (ред.)

                так у вас ещё не чистый QML а Sailfish framework... Но тут очевидно ошибки логические и отсутствие правильного доступа к id. Дело не в самом фреймворке.

                Как называются эти две страницы и как они соотносятся друг с другом. Вторая страница вложена в первую? Первая называется WebView.qml? Что такое pageStack и откуда вы его взяли? Я не вижу в коде id: pageStack, да и обращение к id webApp во второй странице в этом коде является некорректным, поскольку доступа к нему нет.

                P/S/ в дальнейшем используйте специальный диалог для вставки программного кода на сайте. В toolbar редактора находится. Иначе некорректно делается форматирование.

                  a
                  • 25 февраля 2020 г. 7:44

                  Извините описался, уже поправил, страницы Welcome и WebApp.

                    Evgenii Legotckoi
                    • 25 февраля 2020 г. 7:46

                    тем не менее я не вижу pageStack, если это классический StackView, то сначала нужно загрузить в него WebView.qml, а потом пытаться загружать url

                    Как-то так

                    pageStack.push(Qt.resolvedUrl("WebView.qml"))
                    var urlPath = "http://" + initWeb.getAddress()
                    pageStack.currentItem.setUrl(urlPath)
                    
                    
                      a
                      • 25 февраля 2020 г. 7:59

                      Спасибо, исправил. Буду разбираться дальше, он что и сам обновляться не хочет

                        a
                        • 25 февраля 2020 г. 8:00

                          Evgenii Legotckoi
                          • 25 февраля 2020 г. 8:04
                          • (ред.)

                          Вот знаете, это вот треш

                          onUrlChanged: {
                              console.log(webView.url)
                              webView.url = "http://www.google.com/"
                          }
                          

                          Представляете, как это работает?

                          Вы устанавливаете url, срабатывает onUrlChanged, выводит в консоль, вы снова устанавливаете url, срабатывает onUrlChanged, выводит в консоль, вы снова устанавливаете url, срабатывает onUrlChanged, выводит в консоль, вы снова устанавливаете url, срабатывает onUrlChanged, выводит в консоль, вы снова устанавливаете url, срабатывает onUrlChanged, выводит в консоль, вы снова устанавливаете url, срабатывает onUrlChanged, выводит в консоль, вы снова устанавливаете url, срабатывает onUrlChanged, выводит в консоль, вы снова устанавливаете url, срабатывает onUrlChanged, выводит в консоль, вы снова устанавливаете url, срабатывает onUrlChanged, выводит в консоль, вы снова устанавливаете url, срабатывает onUrlChanged, выводит в консоль, вы снова устанавливаете url, срабатывает onUrlChanged, выводит в консоль, вы снова устанавливаете url, срабатывает onUrlChanged, выводит в консоль, вы снова устанавливаете url, срабатывает onUrlChanged, выводит в консоль, вы снова устанавливаете url, срабатывает onUrlChanged, выводит в консоль, вы снова устанавливаете url, срабатывает onUrlChanged, выводит в консоль, вы снова устанавливаете url, срабатывает onUrlChanged, выводит в консоль, вы снова устанавливаете url, срабатывает onUrlChanged, выводит в консоль, вы снова устанавливаете url, срабатывает onUrlChanged, выводит в консоль, вы снова устанавливаете url, срабатывает onUrlChanged, выводит в консоль, вы снова устанавливаете url, срабатывает onUrlChanged, выводит в консоль, вы снова устанавливаете url, срабатывает onUrlChanged, выводит в консоль, вы снова устанавливаете url, срабатывает onUrlChanged, выводит в консоль, вы снова устанавливаете url, срабатывает onUrlChanged, выводит в консоль, вы снова устанавливаете url

                          Понятно?

                            a
                            • 25 февраля 2020 г. 8:06

                            Да

                              Комментарии

                              Только авторизованные пользователи могут публиковать комментарии.
                              Пожалуйста, авторизуйтесь или зарегистрируйтесь
                              AD

                              C++ - Тест 004. Указатели, Массивы и Циклы

                              • Результат:50баллов,
                              • Очки рейтинга-4
                              m
                              • molni99
                              • 26 октября 2024 г. 1:37

                              C++ - Тест 004. Указатели, Массивы и Циклы

                              • Результат:80баллов,
                              • Очки рейтинга4
                              m
                              • molni99
                              • 26 октября 2024 г. 1:29

                              C++ - Тест 004. Указатели, Массивы и Циклы

                              • Результат:20баллов,
                              • Очки рейтинга-10
                              Последние комментарии
                              i
                              innorwall14 ноября 2024 г. 19:03
                              Qt/C++ - Урок 060. Настройка внешнего вида приложения в рантайме I didnt have an issue work colors priligy dapoxetine 60mg revia cost uk August 3, 2022 Reply
                              i
                              innorwall14 ноября 2024 г. 11:42
                              Как Копировать Файлы в Linux If only females relatives with DZ offspring were considered these percentages were 23 order priligy online uk
                              i
                              innorwall14 ноября 2024 г. 9:09
                              Qt/C++ - Урок 068. Hello World с использованием системы сборки CMAKE в CLion ditropan pristiq dosing With the Yankees leading, 4 3, Rivera jogged in from the bullpen to a standing ovation as he prepared for his final appearance in Chicago buy priligy pakistan
                              i
                              innorwall14 ноября 2024 г. 4:05
                              EVILEG-CORE. Использование Google reCAPTCHA 2001; 98 29 34 priligy buy
                              Сейчас обсуждают на форуме
                              i
                              innorwall14 ноября 2024 г. 3:39
                              добавить qlineseries в функции priligy amazon canada 93 GREB1 protein GREB1 AB011147 6
                              i
                              innorwall11 ноября 2024 г. 10:55
                              Всё ещё разбираюсь с кешем. priligy walgreens levitra dulcolax carbs The third ring was found to be made up of ultra relativistic electrons, which are also present in both the outer and inner rings
                              9
                              9Anonim25 октября 2024 г. 9:10
                              Машина тьюринга // Начальное состояние 0 0, ,<,1 // Переход в состояние 1 при пустом символе 0,0,>,0 // Остаемся в состоянии 0, двигаясь вправо при встрече 0 0,1,>…
                              ИМ
                              Игорь Максимов3 октября 2024 г. 4:05
                              Реализация навигации по разделам Спасибо Евгений!

                              Следите за нами в социальных сетях