2011-03-22 175 views
4

我正在使用C++和QML创建一个不错的界面。 我想有一个“控制台视图”,其中大量的文本是通过时间打印的。 但是,当文本项目或webview内容的文本增长时,视图不会“向下滚动”。QML文本滚动

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

我尝试玩滑动和the_webview.evaluateJavaScript + window.scrollTo,但我无法让他们做我想做的事。 这似乎是一个相当简单的用户界面,但我遇到严重的麻烦与QML做到这一点。

谢谢你的回答。

回答

1

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

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

谢谢!

4

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

3

是的,我会使用Flickable包含Text对象。每当您将文字添加到Text时,请检查它的paintedHeight,如果它有更大的尺寸,则调整FlickablecontentY

+0

这激发了我的最终解决方案: – rodrigob 2011-03-22 19:14:50

0

我的解决方案是垂直翻转内容和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 } 
}