我可以从QTextEdit中检索文本光标处字符的文本颜色(或背景颜色)吗?

时间:2016-05-01 23:37:21

标签: linux qt qtextedit text-coloring

我有一个QTextEdit窗口,其中的单词和字母以多种颜色显示。我希望能够在处理窗口内容时检索文本每个部分的颜色。到目前为止,我的尝试是将整个内容保存为html文件,然后解析它以仅提取带有颜色信息的文本。这非常麻烦和困难。如果我可以检索光标位置的文本颜色,我更喜欢使用QTextCursor处理文本。我已经搜索了相应的功能,但还没找到。

是否有一个函数来检索QTextCursor位置的颜色(或格式)?

或者有没有办法检索与格式信息具有相同颜色(或格式)的单词和/或字符的每个连续部分?

1 个答案:

答案 0 :(得分:1)

我找到了一种方法来做我想做的事。以下是相关代码:

QTextCursor tc = qte->textCursor();
tc.movePosition(QTextCursor::Start, QTextCursor::MoveAnchor);
while(tc.movePosition(QTextCursor::NextCharacter, QTextCursor::MoveAnchor))
{
    QTextCharFormat tcf = tc.charFormat();
    int bg = tcf.background().color().rgb();
    int fg = tcf.foreground().color().rgb();
    printf("bg=%x fg=%x\n", bg, fg);
}

欢迎提出任何意见或改进。

[上面更正]:我原来有

QColor bg = tcf.background().color().rgb();
QColor fg = tcf.foreground().color().rgb();

但最后有.rgb(),它会将QColor转换为int