Вобщем такая проблема получилась: беру все блоки (QTextBlock) из QPlainTextEdit::document() сохраняю в QList. Затем, например, при редактировании какой-то блок удаляю. Так вот тот, что остаётся в QList ведёт себя очень странно:
- текст внутри меняется - становится пустой строкой, но блоки без текста тоже содержат пустую строку - это не показатель!
- blockNumber() - непредсказуемый, а должен быть -1
- isValid() - true, а должен быть false по идее (написал багрепорт в Qt)
- другие значения, такие как position() и др. тоже никак не говорят, что блок был удалён
Выкрутился следующим образом:
C++ (Qt)
/// QList<QTextBlock> m_pTextBlocks; - in class definition
...
for(int i = 0; i < m_pTextBlocks.length(); i++)
{
if(m_pTextBlocks[i] != document()->findBlockByNumber(m_pTextBlocks[i].blockNumber()))
m_pTextBlocks.removeAt(i);
}
- достаточно элегантно, на мой взгляд, но может есть способ лучше?