QML文本滚动
问题描述:
我正在使用C++和QML创建一个不错的界面。 我想有一个“控制台视图”,其中大量的文本是通过时间打印的。 但是,当文本项目或webview内容的文本增长时,视图不会“向下滚动”。QML文本滚动
如何使文本/ webview项目底部的文本始终保持可见状态?
我尝试玩滑动和the_webview.evaluateJavaScript + window.scrollTo,但我无法让他们做我想做的事。 这似乎是一个相当简单的用户界面,但我遇到严重的麻烦与QML做到这一点。
谢谢你的回答。
答
funkybro答案激发了我最终的解决方案:
function scroll_to_bottom() {
flickabe_item.contentY =
Math.max(0, webview_item.height - flickabe_item.height);
return;
}
谢谢!
答
也许您应该考虑使用ListView
并将消息作为视图中的项目。然后你可以使用ListView::positionViewAtEnd
。
答
是的,我会使用Flickable
包含Text
对象。每当您将文字添加到Text
时,请检查它的paintedHeight
,如果它有更大的尺寸,则调整Flickable
的contentY
。
答
我的解决方案是垂直翻转内容和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 }
}
这激发了我的最终解决方案: – rodrigob 2011-03-22 19:14:50