Решал подобную задачу. 
void setLineEditTextFormat(QLineEdit* lineEdit, const QList& formats)
{
	if(!lineEdit)
		return;
	QList attributes;
	foreach(const QTextLayout::FormatRange& fr, formats)
	{
		QInputMethodEvent::AttributeType type = QInputMethodEvent::TextFormat;
		int start = fr.start - lineEdit->cursorPosition();
		int length = fr.length;
		QVariant value = fr.format;
		attributes.append(QInputMethodEvent::Attribute(type, start, length, value));
	}
	QInputMethodEvent event(QString(), attributes);
	QCoreApplication::sendEvent(lineEdit, &event);
}