Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: AlekseyK от Декабрь 30, 2010, 03:29



Название: Как определить, что блок текста удалён?
Отправлено: AlekseyK от Декабрь 30, 2010, 03:29
Вобщем такая проблема получилась: беру все блоки (QTextBlock) из QPlainTextEdit::document() сохраняю в QList. Затем, например, при редактировании какой-то блок удаляю. Так вот тот, что остаётся в QList ведёт себя очень странно:
  • текст внутри меняется - становится пустой строкой, но блоки без текста тоже содержат пустую строку - это не показатель!
  • blockNumber() - непредсказуемый, а должен быть -1
  • isValid() - true, а должен быть false по идее (написал багрепорт в Qt (http://bugreports.qt.nokia.com/browse/QTBUG-16349))
  • другие значения, такие как 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);    
   }
- достаточно элегантно, на мой взгляд, но может есть способ лучше?