25 мая 2006

QTextDocument tip.

 Если необходимо наполнить QTextDocument про помощи QTextCursor, то чтобы не удивляться тормознутости этой операции _НИКОГДА_ не делайте так:

QTextEdit textEdit;
QTextDocument *document = textEdit.document();
и далее начинаем с этим документом работать....

Во время редактирования такого документа, QTextEdit будет пытаться его отобразить при каждом изменении, и таким образом вся эта системя будет чудовищно тормозить.

Создавайте документ отдельно, и когда его будет нужно отобразить подключаёте документ к QTextEdit:

QTextEdit textEdit;
QTextDocument *document = new QTextDocument(&textEdit); // установить textEdit родителем документа необходимо чтобы при замене документа текущий удалялся, а не висел в пямяти.
/* наполняем документ */
textEdit.setDocument(document);

У меня при составлении одного документа скорость поднялась с 11 секунд до 400 милисекунд!!!