Как сделать так, чтобы обработчик onContentsSizeChanged в WebEngineView также вызывался для уменьшения высоты его содержимого

Пожалуйста, смотрите комментарий над звонком loadHtml в следующем коде (последний из двух комментариев в коде). Если вы запустите приведенный ниже код, вы увидите, что при отображении исходного HTML-кода WebEngineView увеличивается в высоте, но когда все числа удаляются, за исключением 1Это не дает усадки. Это ошибка или особенность? Если это функция, как она работает? Если это ошибка, пожалуйста, помогите мне избежать ее, и если вы можете, дайте мне ссылку на то, где она сообщается.

Каким образом предел постоянной стоимости приписывается height свойство прямоугольника r функционировать? Пожалуйста, прочитайте комментарий над этой строкой. Это ошибка или особенность? Если это особенность, подскажите, как она работает? Если это ошибка, пожалуйста, дайте мне ссылку, где она сообщается.

import QtQuick 2.10
import QtQuick.Window 2.10
import QtWebEngine 1.5

Window {
    visible: true
    width: 300
    height: 200

    Rectangle { id: r
        width: parent.width

        // If height is set to 0, 1, 2, 3 or 4 the web view or the rectangle
        // won't resize to fit its contents (I think it is related to the
        // border):
        height: 5

        border.width: 2
        border.color: "green"

        WebEngineView {
            anchors.fill: parent
            anchors.margins: {
                left: 2
                top: 2
                right: 2
                bottom: 2
            }

            onContentsSizeChanged: {
                console.log(contentsSize)
                r.height = contentsSize.height + 4
            }

            Component.onCompleted: {
                // The following HTML code shows the numbers from 1 to 5, each
                // on a separate line, and after 5 seconds it shows only the
                // first number, the height of the document being reduced:
                loadHtml("1<br>2<br>3<br>4<br>5" +
                         "<script>setTimeout(function(){document.body.innerHTML" +
                         " = '1';},5000)</script>")
            }
        }
    }
}

0 ответов

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