QTextEdit選中某行文本
因為要做一個RPG游戲里的那種對白顯示模塊,由於每頁能顯示的篇幅是有限的,所以需要知道每頁顯示哪些文字。而這就需要知道一行能顯示哪些文字。
在網上查了查相關的解決方法,但是實踐了一下發現不對,於是自己研究了一下,找到了解決方案。
先說思路:利用QTextEdit中的QTextCursor成員。QTextCursor成員具有一些方法可以很方便的操縱文本,比如選中光標所在的某行,或者使光標移動等。
QTextCursor textCursor = ui->textWidget->textCursor();
textCursor.movePosition(QTextCursor::Start); //將光標移動到起始位置
textCursor.select(QTextCursor::LineUnderCursor);
QString curText = textCursor.selectedText();
但是這樣選中文本時,qt會自動去除結尾的空格或換行,如果剛好某一行結尾有一個空格,用這種方式則會發現空格不見了,如果需要結尾處的空格或換行,這時候就需要做處理。
//剛剛行全選完的行尾作為起始位置
textCursor.setPosition(textCursor.position(),QTextCursor::MoveAnchor);
//向后移動光標,選中一個字符
textCursor.setPosition(textCursor.position()+1,QTextCursor::KeepAnchor);
QString endCharactor = textCursor.selectedText();
if(endCharactor == " "||endCharactor=="\n")
//Do Something
用這種方式,就能完美實現想要的效果了。