Я пытаюсь перемещаться по набору глифов в виджете QTextEdit, но не могу преодолеть следующую проблему: после получения списка QGlyphRuns его невозможно разрушить.
Вот код для получения списка QGlyphRuns:
QTextDocument* doc = ui->textEdit->document();
QTextBlock block = doc->begin();
while(block.isValid())
{
QTextLayout* tl = block.layout();
{
QList<QGlyphRun> glyphs = tl->glyphRuns();
// the exception raises here, upon exiting the block
}
block = block.next();
}
Когда разрушаются глифы, я получаю сообщение об ошибке _BLOCK_TYPE_IS_VALID. Я пробовал несколько способов запустить приведенный выше код:
- простой слот
- слот обрабатывается в отдельном потоке (с использованием функции moveToThread и без нее)
- как обработчик события (событие вызывается методом postEvent из QApplicaiton)
Но ни один из них не помог избавиться от исключения. Единственный случай, когда это не возникает, - это когда приведенный выше код вызывается из конструктора MainWindows (после вызова ui-> setupUI ()).
Я использую QT 4.8 некоммерческий с MSVC ++ 2010 express. Кто-нибудь знает, почему это происходит? И как это обойти?
Заранее спасибо.