我正在尝试浏览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断言失败。我一直在尝试几种方法来启动上面的代码:
但这些都没有帮助摆脱异常。唯一不会出现的情况是从MainWindows构造函数调用上面的代码(在调用ui-&gt; setupUI()之后)。
我正在使用QT 4.8非商业版与MSVC ++ 2010 express。有没有人知道为什么会这样?以及如何解决它?
提前致谢。
答案 0 :(得分:0)
为什么你的代码结构如下:
do
{
//...
}
while(block.isValid());
而不是
while(block.isValid())
{
//...
}
在前一种情况下,代码至少运行一次,因为只在代码块之后检查有效性,所以我猜你在第一个块无效的情况下得到异常。如果将其更改为后一种格式,则只有在第一个块无效时才会跳过代码。
答案 1 :(得分:0)
我发现问题是由在项目的“调试”版本中使用“发布”QT库引起的。切换到“调试”版本后,异常消失了。