2016-05-01 5 views
1

У меня есть окно QTextEdit со словами и буквами, отображаемыми в нескольких цветах. Я хочу, чтобы можно было получить цвет каждой части текста при обработке содержимого окна. Моя попытка до сих пор заключалась в том, чтобы сохранить все содержимое в виде html-файла, а затем проанализировать его, чтобы извлечь только текст с информацией о цвете. Это очень громоздко и сложно. Я бы предпочел обработать текст с помощью QTextCursor, если бы мог получить цвет текста в позиции курсора. Я искал соответствующую функцию, но не нашел ее.Можно ли получить цвет текста (или цвет фона) символа в текстовом курсоре из QTextEdit?

Есть ли функция для получения цвета (или формата) в позиции QTextCursor?

Или, альтернативно, есть способ получить каждый непрерывный раздел слов и/или символов, имеющих один и тот же цвет (или формат) с информацией о формате?

ответ

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); 
} 

любые комментарии или улучшения приветствуются.

[Corrected выше]: Я первоначально имел

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

, но с .rgb() на конце, он преобразует QColor к int.