As I am working on a custom Code Editor I have run into a new problem.
I want to be able to print the QTextDocument, but prepend the line number in each block.
Printing the document as is is no problem, thanks to
QTextDocument::print()
To copy to clipboard, switch view to plain text mode
I was thinking along the lines of cloning the original document and editing each block... but i cant find any way to insert additional text into it.
and i don't want to get the plain text out, because it would destroy the formatting created by my highlighter... ( This would also be the reason why I'm looking to do this directly in the document)
Does anyone have an idea?
UPDATE:
Im going to try using a QTextCursor on the document.... i hope this works.
Last Update:
I got it to work (not very elegant though)
void EditorWindow
::printDocument(QPrinter &printer
) {
numberFormat.setFontItalic(true);
documentCursor->beginEditBlock();
do{
documentCursor
->insertText
("<"+QString::number(documentCursor
->blockNumber
()+1,
10) +">\t",numberFormat
);
}while(documentCursor
->movePosition
(QTextCursor::NextBlock));
documentCursor->endEditBlock();
document->print(&printer);
document->undo();
}
void EditorWindow::printDocument(QPrinter &printer)
{
QTextDocument *document = codeEditor->getDocument();
QTextCursor *documentCursor = new QTextCursor(document);
QTextCharFormat numberFormat;
numberFormat.setForeground(QBrush(QColor("blue")));
numberFormat.setFontItalic(true);
documentCursor->beginEditBlock();
do{
documentCursor->insertText("<"+QString::number(documentCursor->blockNumber()+1,10)
+">\t",numberFormat
);
}while(documentCursor->movePosition(QTextCursor::NextBlock));
documentCursor->endEditBlock();
document->print(&printer);
document->undo();
}
To copy to clipboard, switch view to plain text mode
Bookmarks