我有一个QML TextEdit
元素,我计划附加一些文本并将光标放在最后。我的方法:
import QtQuick 1.1
Rectangle {
color: "black"
anchors.fill: parent
focus: false
TextEdit {
id: txtCommands
color: "lightGreen"
anchors.fill: parent
textFormat: TextEdit.RichText
wrapMode: TextEdit.WordWrap
font.family: "Consolas"
font.pixelSize: 15
focus: true
MouseArea {
anchors.fill: parent
focus: false
}
Keys.onPressed: {
console.log(event.text)
switch (event.key) {
case 16777234: // LEFT
case 16777235: // UP
case 16777237: // DOWN
case 16777236: // RIGHT
event.accepted = true
break;
case 16777220: // Enter
txtCommands.text = txtCommands.text + ">: "
txtCommands.selectAll()
txtCommands.cursorPosition = txtCommands.text.length
break;
}
}
}
}
但它不起作用。我怎么能这样做?
答案 0 :(得分:5)
textFormat
设置为TextEdit.PlainText
,因为否则会有很多不可见的HTML代码。以下代码适用于我。
Keys.onReturnPressed: {
event.accepted = true
txtCommands.text = txtCommands.text + ">: "
txtCommands.cursorPosition = txtCommands.text.length
}
答案 1 :(得分:2)
如果您的TextEdit不是纯文本模式textFormat: TextEdit.PlainText
,而是设置为textFormat: TextEdit.RichText
,那么
txtCommands.text.length
将包含所有不可见的html / rtf格式化标记内容的长度。
最简单的解决方案是使用txtCommands.length
。此属性仅提供可见字符的长度。
答案 2 :(得分:0)
temp
变量。temp= TextEdit.getText(0, TextEdit.length)
TextEdit.cursuorPosition += temp.length