开发者

QML text scroll

I am using C++ and QML to create a nice interface. I would like to have a "console view", where plenty to text is printed through time. However, when the text of a text item or webview content grows, the view does not "scroll down".

How can I make the text on the bottom of the text/webview item always stay 开发者_运维知识库visible ?

I have tried playing with flickable and the_webview.evaluateJavaScript + window.scrollTo , but I could not get them to do what I want. This seems a fairly simple piece of UI, but I am having serious troubles to do it with QML.

Thanks for you answer.


Yeah I'd use a Flickable containing a Text object. Whenever you add text to the Text, check its paintedHeight, and adjust the Flickable's contentY if it's got any bigger.


Maybe you should consider using a ListView and have the messages as items in the view. Then you could use ListView::positionViewAtEnd.


funkybro answers inspired my final solution:

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

Thanks !


My solution to this was to vertically flip both the content and Flickable. This way the text ends the right way up and is naturally anchored to the bottom of the flickable area.

It might be more efficient too since the transform is handled by OpenGL behind the scenes.

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 }
}
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜