【问题标题】:Qt/QML: WebEngineView adjusting heightQt/QML:WebEngineView 调整高度
【发布时间】:2017-03-23 00:27:19
【问题描述】:

我在 ListView 中有一堆 WebEngineView。例如:

ListView 
{
    model: myModel
    delegate: Component 
    {
        Item 
        {
            WebEngineView 
            {
                id: myWebView
                Component.onCompleted: loadHtml(model.modelData.htmlText, baseURL)
            }
        }
    }
}

加载 html 后如何调整 Item 的高度?有问题的 HTML 可能包含图像,因此我想在加载所有内容后调整 WebEngineView 的大小。我怀疑我可以这样做:

ListView 
{
    model: myModel
    delegate: Component 
    {
        Item 
        {
            WebEngineView 
            {
                id: myWebView
                Component.onCompleted: loadHtml(model.modelData.htmlText, baseURL)
                onLoadingChanged: 
                { 
                    if (!loading && loadRequest.status == WebEngineView.LoadSucceededStatus)
                    {
                        height = ???? 
                    }
                }
            }
        }
    }
}

但我不确定我应该设置什么高度。

【问题讨论】:

  • 赋值给什么值?无论如何,您应该将大小设置为父项,因为现在它的高度/宽度为零,因此将achors.fill: parent 设置为myWebView。顺便说一句,Item 在这里过分了。
  • 只是一个小旁注:在您的情况下,将WebEngineView 包装在Component 中是完全没有必要的。我也找不到任何理由将其包装在 Item 中(除非 WebEngineView 本身不是 Item,因此可能不会用作委托?)
  • 感谢您关于删除Item 的建议。在此示例中可能过多,但在我的实际代码中,我在委托中有其他对象。我将更新问题以更好地反映我正在尝试做的事情。
  • 我没试过,但你可能在找contentSize

标签: c++ qt qml webengine


【解决方案1】:

我可以像这样使用 `onContentsSizeChaged' 做我想做的事:

ListView 
{
    model: myModel
    delegate: Component 
    {
        Item 
        {
            WebEngineView 
            {
                id: myWebView
                Component.onCompleted: loadHtml(model.modelData.htmlText, baseURL)

                onContentsSizeChanged:
                {
                    myWebView.height = contentsSize.height;
                }
            }
        }
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-04
    • 1970-01-01
    相关资源
    最近更新 更多