我正在尝试设置一个突出显示搜索单词的文本小部件,当我用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
之前清除选择。