Qt 6在QPlainText::setExtraSelections中崩溃



我正在尝试设置一个突出显示搜索单词的文本小部件,当我用QPlainText::setDocument打开一个新文件,然后立即使用QPlainText::setExtraSelections时,我在中得到一个SIGSEV崩溃

QTextDocumentPrivate::rootFrame
QTextDocumentPrivate::frameAt
QTextCursorPrivate::complexSelectionTable
QTextCursor::hasComplexSelection
QWidgetTextControl::selectionRect
QWidgetTextControl::setExtraSelections

QTextDocumentPrivate导致SIGSEV,因为它是空的this指针。但是,如果在加载文档之前没有设置单词,则不会发生这种情况。

我必须做一些的事情来强制它生成QTextDocumentPrivate。但我不知道那是什么。

实际上,之所以会发生这种情况,是因为QPlainText::setDocument不会删除QPlainText::setExtraSelections的先前结果。因此,当设置新的选择试图删除以前选择的内容时,它们都有无效的指针,这会导致崩溃。

要修复此问题,请调用:textEdit->setExtraSelections({});以在调用QPlainText::setDocument之前清除选择。

相关内容

  • 没有找到相关文章

最新更新