QTextEdit選中某行文本


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

用這種方式,就能完美實現想要的效果了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM