При интеграции классического примера Flickable для TextEdit есть особенность - курсор нельзя поместить в конец текста с использованием мыши - если текст выходит за рамки ПЕРВОНАЧАЛЬНОГО окна отображения (в первоначальном перемещается). При этом в конец текста можно переместить курсор стрелочками. Это особенно неудобно на мобильной платформе.
C++ (Qt)
Flickable {
id: flick
width: parent.width; height: parent.height;
contentWidth: txtEdComment.paintedWidth
contentHeight: txtEdComment.paintedHeight
clip: true
boundsBehavior: Flickable.DragOverBounds
flickableDirection: Flickable.AutoFlickDirection
function ensureVisible(r) {
if (contentX >= r.x)
contentX = r.x;
else if (contentX+width <= r.x+r.width)
contentX = r.x+r.width-width;
if (contentY >= r.y)
contentY = r.y;
else if (contentY+height <= r.y+r.height)
contentY = r.y+r.height-height;
}
TextEdit {
id: txtEdComment
text: qsTr("_Text Edit")
anchors.rightMargin: 5
anchors.leftMargin: 2
anchors.bottomMargin: 2
anchors.topMargin: 2
width: flick.width
height: flick.height
focus: true
wrapMode: TextEdit.Wrap
transformOrigin: Item.Bottom
onCursorRectangleChanged: flick.ensureVisible(cursorRectangle)
}
}