TL;DR: 当我点击它时,
我有一个带有
拼写检查完成后,我发出了创建的 SyntaxHighlighter 的
这是一个小项目的示例,演示了在点击文本之前它是如何不起作用的:https://bitbucket.org/ribtoks/qt-highlighting-issue。您有什么解决办法吗?
TextEdit
才会绘制高亮文本。无法通过其他任何方法解决。我有一个带有
QAbstractListModel
模型和字符串属性的 ListView
。
这些字符串属性正在进行拼写检查,并使用 QSyntaxHighlighter
显示拼写错误。在 Component.onCompleted
中创建了一个 TextEdit
的 QSyntaxHighlighter
子类。我仔细检查了高亮显示是在正确的拼写错误下执行的,并且 setFormat()
函数也使用了正确的位置。问题是当且仅当我点击 TextEdit
时,它才会以红色(无效)绘制文本。
TextEdit
位于 Flickable
中(用于跟踪光标),而 Flickable
位于 Rectangle
中(具有良好的背景和边框)。绑定一些信号并调用 TextEdit
的 update() 函数没有帮助。拼写检查完成后,我发出了创建的 SyntaxHighlighter 的
rehighlight()
信号。Rectangle {
id: descriptionRect
height: 30
border.width: descriptionTextInput.activeFocus ? 1 : 0
clip: true
Flickable {
id: descriptionFlick
contentWidth: descriptionTextInput.paintedWidth
contentHeight: descriptionTextInput.paintedHeight
anchors.fill: parent
interactive: false
flickableDirection: Flickable.HorizontalFlick
height: 30
clip: true
focus: false
function ensureVisible(r) {
if (contentX >= r.x)
contentX = r.x;
else if (contentX+width <= r.x+r.width)
contentX = r.x+r.width-width;
}
TextEdit {
id: descriptionTextInput
width: descriptionFlick.width
height: descriptionFlick.height
text: description
onTextChanged: model.editdescription = text
Component.onCompleted: {
globalModel.initDescriptionHighlighting(index, descriptionTextInput.textDocument)
}
onCursorRectangleChanged: descriptionFlick.ensureVisible(cursorRectangle)
}
}
}
这是一个小项目的示例,演示了在点击文本之前它是如何不起作用的:https://bitbucket.org/ribtoks/qt-highlighting-issue。您有什么解决办法吗?