6

我有一个 QMLTextEdit元素,我计划附加一些文本并将光标放在末尾。我的方法:

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

但它不起作用。我怎样才能做到这一点?

4

3 回答 3

6
  1. 设置textFormatTextEdit.PlainText因为你有很多不可见的 html 代码,否则。
  2. 以下代码适用于我。

    Keys.onReturnPressed: {
        event.accepted = true
        txtCommands.text = txtCommands.text + ">: "
        txtCommands.cursorPosition = txtCommands.text.length
    }
    
于 2012-12-25T15:21:53.377 回答
3

如果您的 TextEdit 不是纯文本模式textFormat: TextEdit.PlainText,而是设置为textFormat: TextEdit.RichText,那么
txtCommands.text.length将包括所有不可见的 html/rtf 格式标记内容的长度。

最简单的解决方案是使用txtCommands.length. 此属性仅给出可见字符的长度。

于 2017-07-25T21:59:11.943 回答
1
  1. 创建一个字符串temp变量。
  2. temp= TextEdit.getText(0, TextEdit.length)
  3. TextEdit.cursuorPosition += temp.length
于 2015-12-14T08:25:27.777 回答