Qt 计算QTextEdit 行位置 实例是本文介绍的内容,先来看内容。笔者以前撰写过一篇关于QPlainTextEdit计算和绘制行号的文章, 里面详细讲述了遍历QPlainTextEdit的每一行及其位置的方法。 最近遇到一个问题是要为QTextEdit实现相同的功能。经过实践发现,原理相同但使用的函数略有不同,特此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 行位置 实例的内容介绍完了,希望本文对你有所帮助!