具有不同文本颜色的 QTextEdit (Qt / C++)
我有一个显示文本的 QTextEdit 框,我希望能够在同一个 QTextEdit 框中设置不同文本行的文本颜色。 (即第 1 行可能是红色,第 2 行可能是黑色,等等)
这在 QTextEdit
框中可能吗?如果没有,获得这种行为的最简单方法是什么?
谢谢。
I have a QTextEdit
box that displays text, and I'd like to be able to set the text color for different lines of text in the same QTextEdit
box. (i.e. line 1 might be red, line 2 might be black, etc.)
Is this possible in a QTextEdit
box? If not, what's the easiest way to get this behavior?
Thanks.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(7)
快速补充一下:如果您以编程方式填充文本框,则可以使用
textEdit->setTextColor(QColor&)
自行生成 html。您可以自己创建 QColor 对象,或使用 Qt 命名空间中的预定义颜色之一(Qt::black、Qt::red 等)。它将把指定的颜色应用于您添加的任何文本,直到使用不同的颜色再次调用它。Just a quick addition: an alternative to generating the html yourself, if you're populating the text box programatically, is to use
textEdit->setTextColor(QColor&)
. You can create the QColor object yourself, or use one of the predefined colours in the Qt namespace (Qt::black, Qt::red, etc). It will apply the specified colour to any text you add, until it is called again with a different one.唯一对我有用的是 html。
代码片段如下。
The ONLY thing that worked for me was html.
Code snippet follows.
使用 HTML 格式的文本,例如:
其中 text 是 HTML 格式的文本,包含彩色线条等。
Use text formated as HTML, for example:
where text, is a HTML formated text, contains with colored lines and etc.
文档链接
一些引用:
。
。
这意味着大部分标签已被弃用,因此不包含任何当前的 CSS,所以我转向了:
Link to doc
A few quotes:
.
.
This means mostly deprecated tags and as such does not include any current CSS, so I turned to this:
扩展 https://stackoverflow.com/a/13287446/1619432:
QTextEdit::append()< /code> 使用先前设置的 FontWeight / TextColor 插入一个新段落。
insertHTML()
或InsertPlainText()
以避免插入新段落(例如,在单行中实现不同的格式),不考虑字体/颜色设置。而是使用 QTextCursor:
Extending on https://stackoverflow.com/a/13287446/1619432:
QTextEdit::append()
inserts a new paragraph with the previously set FontWeight / TextColor.insertHTML()
orInsertPlainText()
to avoid inserting a new paragraph (e.g. to achieve different formats in a single line) do not respect the font/color settings.Instead use QTextCursor:
这是我使用 QTextEdit 进行非常简单的错误记录的解决方案。
它是这样的:
当然,您可以继续添加日期/时间和其他很酷的东西:)
This is my solution for a very simple error logging using QTextEdit.
This is how it looks like:
Of course, you can go ahead and add date/time and other cool stuff :)
哇,这是一个古老的问题......但无论如何,它现在出现在我身上,就像@badgerr所说,在你调用setTextColor(QColor& colorA)之后,你之后附加的文本的颜色将是colorA,直到你再次设置颜色。它不会更改您在设置 textColor 之前附加的文本的颜色。
colorList 存储一些 QColor 对象,此代码片段以 RGB 格式显示颜色及其代表的颜色。
Wow, this is a immemorial problem...But anyway, it comes to me now, and just like @badgerr said, after you calling setTextColor(QColor& colorA), the color of the text you append after that will be colorA until you set the color again. It will not change the color of text you appended before you set the textColor.
the colorList stores some QColor objects, this code snippet show the color in RGB format with the color it represents.