首页 文章

QML文本滚动

提问于
浏览
4

我正在使用C和QML来创建一个漂亮的界面 . 我希望有一个“控制台视图”,随着时间的推移打印出足够的文本 . 但是,当文本项或webview内容的文本增长时,视图不会“向下滚动” .

如何使text / webview项目底部的文本始终保持可见?

我试过玩flickable和the_webview.evaluateJavaScript window.scrollTo,但是我无法让他们做我想做的事 . 这似乎是一个相当简单的UI,但我在使用QML时遇到了严重的麻烦 .

谢谢你的回答 .

4 回答

  • 4

    也许您应该考虑使用 ListView 并将消息作为视图中的项目 . 然后你可以使用 ListView::positionViewAtEnd .

  • 0

    是的我会使用包含 Text 对象的 Flickable . 每当你向 Text 添加文本时,检查它的 paintedHeight ,并调整 FlickablecontentY ,如果它有更大的 .

  • 1

    funkybro的答案启发了我的最终解决方案:

    function scroll_to_bottom() {
        flickabe_item.contentY = 
            Math.max(0, webview_item.height - flickabe_item.height);
        return;
    }
    

    谢谢 !

  • 4

    我的解决方案是垂直翻转内容和Flickable . 这样,文本以正确的方式结束,并自然地锚定在可滑动区域的底部 .

    由于OpenGL在幕后处理变换,因此它可能更有效 .

    Flickable {
        id: flick
        anchors.fill: parent
        contentHeight: text.height
        Text {
            id: text
            width: parent.width
            transform: Scale { yScale: -1; origin.y: text.height/2 }
        }
    
        transform: Scale { yScale: -1; origin.y: flick.height/2 }
    }
    

相关问题