Использовать относительный URL в QML Webview

#qt #url #webview #qml #relative-path

#qt #url #webview #qml #относительный путь

Вопрос:

Я пытаюсь заставить QML (main.qml) загрузить локальный HTML-файл index.html использую url: "file:///../../htmlfiles/index.html" , но это не работает.

Не могли бы вы, пожалуйста, помочь?

Ответ №1:

В итоге я перешел qApp->applicationDirPath() с c на QML с помощью setContextProperty() и использовал url: "file:///" applicationDirPath "/htmlfiles/index.html" для устранения проблемы.

Комментарии:

1. engine.rootContext()->setContextProperty("workingDirectory", QUrl::fromLocalFile(app.applicationDirPath())); в Qt 5.

Ответ №2:

 WebView {
        url: Qt.resolvedUrl( "html/index.html" )
        x: 0
        y: 0
        smooth: false
        anchors {
            top: window.top
            bottom: window.bottom
            left: window.left
            right: window.right
        }
    }
  

У меня это работает!

Ответ №3:

Попробуйте без file:/// :

 WebView {
    url: "../../htmlfiles/index.html"
    // [...]
}
  

Комментарии:

1. Я скопировал каталог htmlfiles, используя DEPLOYMENT в .pro, и по какой-то причине это решение не работает (возможно, я что-то упускаю). Мой QML связан с использованием . файл qrc и HTML-файл копируются с использованием описанного выше метода. В этом проблема?

2. @pshah: Если файл QML скомпилирован в двоичный файл программы, а HTML-файл расположен вне двоичного файла, на него нельзя ссылаться по относительному пути, потому что файлы находятся в двух разных «файловых системах».

Ответ №4:

Есть более простой способ сделать это:

 WebView {
        id: translationsList
        anchors.fill: parent
        url: "qrc:/about.html"
        }
  

Комментарии:

1. Как предложил Радон в разделе комментариев, я думаю, это не сработает. «@pshah: Если файл QML скомпилирован в двоичный файл программы, а HTML-файл расположен вне двоичного файла, на него нельзя ссылаться по относительному пути, потому что файлы находятся в двух разных «файловых системах».

Ответ №5:

попробуйте: filename=»/etc/issue»; url = Qt.resolvedUrl(имя файла);