2012-04-17 107 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