Qt 計算QTextEdit 行位置 實例
Qt 計算QTextEdit 行位置 實例是本文介紹的內(nèi)容,先來看內(nèi)容。筆者以前撰寫過一篇關于QPlainTextEdit計算和繪制行號的文章, 里面詳細講述了遍歷QPlainTextEdit的每一行及其位置的方法。 最近遇到一個問題是要為QTextEdit實現(xiàn)相同的功能。經(jīng)過實踐發(fā)現(xiàn),原理相同但使用的函數(shù)略有不同,特此memo,希望對廣大qter有用。
如果沒有閱讀過筆者前文的, 請自行復習: 計算和繪制QPlainTextEdit的行號
針對QTextEdit的代碼版本列舉如下:
- QPainter painter(w);
- QTextBlock block = document()->begin();
- int top = 0;
- QTextCursor cursor(block);
- cursor.setPosition(0);//move to the beginning of the document
- int linenum = 0;
- while(linenum < document()->lineCount())
- {
- for( int i = 0 ; i < block.lineCount(); i ++) { color += 50; color %= 255; QColor pc(color,color,color);
- QTextLine line = block.layout()->lineAt(i);
- painter.fillRect( block.layout()->position().x(), block.layout()->position().y(), line.width(), line.height(), pc);
- qWarning() << linenum << block.layout()->position() << color;
- linenum ++;
- }
- blockblock = block.next();
- if(!block.isValid())
- {
- break;
- }
- }
其實比較兩者, 其相似程度達到95%以上。 只有一點需要提示注意, 那就是QTextLine的位置信息(x、y,rect等)是相對于當前QTextBlock而言, 所以需要按照block的位置信息相應位移才是正確的值。
這篇blog比較簡單,僅做memo用。
小結:Qt 計算QTextEdit 行位置 實例的內(nèi)容介紹完了,希望本文對你有所幫助!