[英]How to update QML ScrollView navigation when navigating child QML TextEdit with up and down keys
I have a TextEdit
inside a ScrollView
. 我在ScrollView
有一个TextEdit
。 How can I implement logic so that the ScrollView
moves when the user presses the up or down arrow key and it moves the text beyond the ScrollView
bounds? 我怎样才能实现逻辑,这样的ScrollView
,当用户按下向上或向下箭头键,它会将文本以外的移动ScrollView
界限?
//qml
ScrollView {
id: palGenTextScrollView
property int scrollBarWidth: 15
anchors.fill: parent
MouseArea {
id: mouseArea
anchors.fill: parent
onWheel: {
if (wheel.modifiers & Qt.ControlModifier){
if (wheel.angleDelta.y > 0)
{
mainTextEdit.font.pixelSize++
}
else
{
mainTextEdit.font.pixelSize--
}
}
else{
wheel.accepted=false
}
}
}
TextEdit {
id: mainTextEdit
text: fileio.palFileText
font.family: "Courier"
wrapMode: TextEdit.Wrap
selectByMouse: true
//when going out of upward bounds: palGenTextScrollView.flickableItem.contentY--
//when going out of downward bounds: palGenTextScrollView.flickableItem.contentY++
}
}
You can use TextArea
which does exactly that for you. 您可以使用TextArea
来为您执行此操作。 If you want to bake your own, take a look at the flickable example in TextEdit
's docs in the detailed description. 如果您想烤自己的东西,请在详细说明中查看TextEdit
文档中的可轻弹示例。
Note that the TextEdit does not implement scrolling, following the cursor, or other behaviors specific to a look-and-feel. 请注意,TextEdit不会实现滚动,跟随光标或其他特定于外观的行为。 For example, to add flickable scrolling that follows the cursor: 例如,要添加跟随光标的可滑动滚动:
Flickable {
id: flick
width: 300; height: 200;
contentWidth: edit.paintedWidth
contentHeight: edit.paintedHeight
clip: true
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: edit
width: flick.width
height: flick.height
focus: true
wrapMode: TextEdit.Wrap
onCursorRectangleChanged: flick.ensureVisible(cursorRectangle)
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.