我知道您可以更改行编辑的颜色,只要所有文本都是相同的颜色,但是可以为字符分配不同的颜色吗?也就是说,有些字符是红色的,有些是黑色的,或者只是每个字符都有不同的颜色 .
这里有一个类似的问题 - How can I change color of part of the text in QLineEdit?,但在我的情况下还有一个额外的约束 - QLineEdit必须在编辑时保留颜色位置,而输入的新文本假定某些默认颜色 . 另一个问题没有那个限制 .
它有点有用,但颜色与文本分离 - 当你编辑行编辑时,恰好在给定位置的符号假定该位置的颜色和格式 . 那就是 the formatting is not anchored to the text . 这里有两个截图,看看我在说什么:
我将自己解决这个缺点,当我准备好时,我会将结果作为答案发布 .
我会通过订阅 textEdited()
信号或直接处理输入事件来做到这一点 . 每次更改文本时,我都会将颜色位置同步到它 .
与此同时,如果有人知道我错过了一个非常简单的解决方案,或者更容易解决问题,请随时分享 .
1 回答
我最后通过跟踪光标位置,最后一个选择开始和长度以及最后一个文本大小来实现它 . 当发出
textEdited()
信号时,我使用它们来确定插入和/或删除的文本,然后重放颜色数组中的插入和/或删除,以便将其同步到文本 .您可以指定用于用户插入的文本的颜色 . 如果未指定,将使用系统默认值,具体取决于系统主题 .
唯一的问题是 it doesn't support Undo ,因为我不知道如何区分
textEdited()
信号是否是由撤销操作引起的 .ColorLineEdit.h
ColorLineEdit.cpp
Sample usage
:)