и при каждом обновлении страница с отчетом прыгает наверх, т.е. пользователь теряет задание на котором находится. В общем необходимо зафиксировать каким-то образом позицию в отчете..
Столкнулся с аналогичной проблемой...
использование такого подхода:
//перед обновлением:
ver_pos = textedit->verticalScrollBar()->value();
...
//а после обновления:
textedit->verticalScrollBar()->setValue(ver_pos);
Приводит к тому, что позиция возвращается лишь примерно (текст прыгает около того места, где надо), т.к. у textedit стоит опция переноса слов (и максимальное значение скроллбара может меняться), если сделать
textedit->setWordWrapMode(QTextOption::NoWrap);
то позиция железно сохраняется где надо (т.к. количество строк одинаковое, хотя они могут быть разной длины), но появляется ненужная прокрутка по горизонтали...
Попытка сохранять и восстанавливать позицию следующим образом:
//перед обновлением текста
textedit->setWordWrapMode(QTextOption::NoWrap);
textedit->update();
ver_pos = textedit->verticalScrollBar()->value();
textedit->setWordWrapMode(QTextOption::WordWrap);
...
//после замены текста
textedit->setWordWrapMode(QTextOption::NoWrap);
textedit->update();
textedit->verticalScrollBar()->setValue(ver_pos);
textedit->setWordWrapMode(QTextOption::WordWrap);
почему-то не даёт результата - позиция опять скачет около нужного места...
Если заменить textedit->update() на textedit->repaint() видно, что обновление происходит - горизонтальная прокрутка появляется и тут же исчезает, но позиция "скачет"...
Что можно сделать?