[Interest] Text editor's line numbers: misalignment

Sensei senseiwa at gmail.com
Wed Aug 22 10:51:20 CEST 2012

On 8/22/12 10:09am, Diego Iastrubni wrote:
> 1) use the same font for the line number as the text editor -
> or
> 2) set the hight of each line in the panel, as the hight of each line in
> the editor.

Actually, that is what the code from Qt does. It wouldn't explain why 
the code works with every font I've tried *except* Monaco.

When you set the font in the constructor, both line numbers and editor 
use the same QFont object. From 
as I understand, the method lineNumberAreaPaintEvent uses the current 
editor's font and font metrics:

void CodeEditor::lineNumberAreaPaintEvent(QPaintEvent *event)
      QPainter painter(lineNumberArea);
      painter.fillRect(event->rect(), Qt::lightGray);

      QTextBlock block = firstVisibleBlock();
      int blockNumber = block.blockNumber();
      int top = (int) 
      int bottom = top + (int) blockBoundingRect(block).height();

      while (block.isValid() && top <= event->rect().bottom()) {
          if (block.isVisible() && bottom >= event->rect().top()) {
              QString number = QString::number(blockNumber + 1);
              painter.drawText(0, top, lineNumberArea->width(), 
                               Qt::AlignRight, number);

          block = block.next();
          top = bottom;
          bottom = top + (int) blockBoundingRect(block).height();

Anyway, are you experiencing this behavior or is it just me?

More information about the Interest mailing list