Работаю с QTextEdit, текст генерируется из памяти из специальных объектов.
Перезаписал paintEvent чтобы перед каждым репейнтом переделывать текст в соответствии с его объектным представлением.
Однако setHtml вызывает повторно paintEvent, и получается рекурсия, выдаёт ".. paintEvent # 550 ..." и так далее....
Долго гуглил, лазал по форумам, однако не setUpdatesEnabled, не processEvents, не булева переменная НЕ ПОМОГЛИ!!! ВСё равно рекурсия, несмотря на то что всё должно быть обработано.
Ядро одно подвисает на 100% от рекурсииvoid Paragraph::paintEvent(QPaintEvent* pe)
{
static int countP=0;
if(isPainting)return;
isPainting=true;//Булевская переменная чтобы предотвратить рекурсию
setUpdatesEnabled(false);
qDebug()<<"paintEvent #"<<countP++;
int lastCursorPos = textCursor().position();//Сохраняю курсор
setHtml(textPar);
setTextCursorPosition(lastCursorPos);//Восстанавливаю курсор
QTextEdit::paintEvent(pe);//вызываю репайнт текста
QApplication::processEvents();// Все репайнты должны быть обработаны здесь
setUpdatesEnabled(true);
isPainting=true;
}