Как изменить страницу ошибки URL-адреса QML WebEngineView

Я использую WebEngine в QML. Есть ли способ изменить то, что отображается, когда есть неверный URL-адрес? В настоящее время он говорит что-то вроде:

This site can’t be reached
The webpage at qrc:/blahblah.html might be temporarily down or it may have moved permanently to a new web address.
ERR_INVALID_URL

что неуместно, потому что это не веб-сайт, а просто отсутствующий ресурс QML. Будет приветствоваться решение QML или C++.


person Paul DeRocco    schedule 15.01.2019    source источник


Ответы (1)


Для Qt WebEngine это недопустимый ресурс, поэтому он указывает, что это недопустимый URL-адрес. Возможным решением является обнаружение ошибки и загрузка нужного HTML.

WebEngineView {
    anchors.fill: parent
    url: "qrc:/blahblah.html"
    onLoadingChanged: {
        if(loadRequest.status === WebEngineLoadRequest.LoadFailedStatus){
            var html = loadRequest.errorString;
            console.log(loadRequest.errorDomain)
            loadHtml(html);
        }
    }
}
person eyllanesc    schedule 15.01.2019
comment
Как обычно, все, что я пробую, работает наполовину. Проблема в том, что loadHtml() добавляет новую страницу в историю, поэтому, если я делаю то, что обычно делают, увидев ошибку, возвращаюсь назад, она возвращается к исходной странице с ошибкой, а затем обратно к моей странице с ошибкой, и не к тому, что было до него. Поэтому я попытался вызвать goBack() перед loadHtml(). Ну никакой радости. Я застрял в вызовах console.log, чтобы попытаться выяснить порядок, в котором все происходит на самом деле — с браузером много чего происходит в фоновом режиме после того, как вы его вызываете. Я не придумал комбинацию, которая действительно работает. - person Paul DeRocco; 17.01.2019