我試圖通過QTextEdit小部件中的字形集進行導航,但無法克服以下問題:在檢索到QGlyphRuns列表後,無法將其解散。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功能)
- 爲事件處理(事件被QApplicaiton的postEvent方法解僱)
但是這些都沒有幫助擺脫例外。唯一的情況是,當上面的代碼從MainWindows構造函數調用時(在調用ui-> setupUI()之後)。
我使用MSVC++ 2010 express的QT 4.8非商業版本。有人知道爲什麼會發生嗎?以及如何解決它?
在此先感謝。
嗨,teukkam, 是的,謝謝你指點我。由於某種原因,我認爲必須至少有一個有效的塊(因爲當textedit的上下文被改變時調用該函數)。但這是不正確的,因爲刪除內容也是一個變化。 我已更正了代碼,但此錯誤似乎與原始問題無關,因爲該例外依然出現。 再次感謝。 – Ant 2012-03-21 14:08:00