То, что вы хотите, не может быть сделано с помощью QLabel. QLabel предназначен для хранения основных текстовых меток - его поддержка HTML довольно ... веревочная.
Однако вы можете достичь этого, используя QTextEdit & QTextDocument.
Попробуйте что-то вроде этого (я пишу это по памяти, поэтому оно может не скомпилироваться или быть на 100% правильным):
QTextDocument *doc = new QTextDocument(this);
doc->setDefaultStyleSheet("h3 { font-color: red; }");
QTextEdit *edit = new QTextEdit(this);
edit->setDocument(doc);
edit->setHTML("this is a red <h3>heading</h3>");
Важным моментом является использование QTextDocument, который позволяет изменять таблицу стилей HTML. Из документации QT:
The default style sheet is applied to all newly HTML formatted text that is inserted into the document, for example using setHtml() or QTextCursor::insertHtml().
The style sheet needs to be compliant to CSS 2.1 syntax.
Note: Changing the default style sheet does not have any effect to the existing content of the document.
см. Здесь для получения дополнительной информации
Edit:
Чтобы получить таблицу стилей по умолчанию, вы можете вызвать QTextDocument::DefaultStyleSheet()
- однако это относится только к QTextDocuments и может относиться или не применяться ко всем элементам управления Qt (включая QLabel).