Попробуйте:
QTextCharFormat fmt;
fmt.setForeground(color);
QTextCursor cursor = textEdit->textCursor();
if(!cursor.hasSelection())
cursor.select(QTextCursor::WordUnderCursor);
cursor.mergeCharFormat(format);
textEdit->mergeCurrentCharFormat(format);
Изменения QTextCharFormat позволят не только цвет менять