2011-03-22 157 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 } 
}