2012-04-17 106 views
0
QTextCursor c = ui->textEdit->textCursor(); 
QChar cc = c.PreviousCharacter; 

这不会产生错误,但也没有结果(不知道是什么存储在cc中)。我希望在QTextEdit中收集前一个类型化的字符,不管光标位于何处(例如,不收集QTextEdit中的最后一个字符,而是最后输入的字符)。任何人?谢谢!Qt:获取以前输入的字符

更新:

终于明白了。看代码。

QTextCursor cursor = ui->textEdit->textCursor(); 
cursor.select(QTextCursor::WordUnderCursor); 
QString c = cursor.selectedText().right(1); 

回答

2

QTextCursor::PreviousCharacter是一个枚举,因此您只需将该值的BeginCharacter存储在该枚举中。它应该像这样使用:c.movePosition(QTextCursor::PreviousCharacter)意思是“将光标移动到前一个字符”,意思是左侧的下一个字符,如果您正在输入西方的从左到右的脚本,反之亦然(例如阿拉伯语)脚本。它不会跟踪您输入的字母。您可能需要实现记录按键的关键事件处理程序。

+0

我有一个关键事件(on_textEdit_textChanged),并测试它的工作原理(使用QMessageBox)。但是'c.movePosition(QTextCursor :: PreviousCharacter)'没有真正发生。光标停留在相同的位置。如果我写'QChar cc = c.movePosition(QTextCursor :: PreviousCharacter);' – raze 2012-04-17 10:40:03

+1

为什么你甚至试图存储从movePosition返回的任何东西。它只返回一个布尔值,指示移动是否成功,即如果你在缓冲区的开始处,它将返回false,因为它不能再向后移动,如果移动成功则返回true。你正在阅读文档,或只是想猜测每个函数的作用? – teukkam 2012-04-17 10:52:18