2009-09-23 9 views
31

Ich möchte eine einzelne, fett rote Linie in meiner Anwendung mit Qt schreiben.Wie erstelle ich ein fettes, rotes Textlabel in Qt?

Soweit ich verstehe, würde ich eine QLabel erstellen, legen Sie das Textformat zu Rich Text und gibt ihm einen Rich-Text-Zeichenfolge anzuzeigen:

QLabel *warning = new QLabel; 
warning->setTextFormat(Qt::RichText); 
warning->setText("{\\rtf1\\ansi\\ansicpg1252 {\\fonttbl\\f0\\fswiss\\fcharset0 Helvetica;} {\\colortbl;\\red255\\green0\\blue0;} \\f0 \\cf0 this is bold red text}"); 

ich diesen Rich-Text-String in einem Rich-Text-Editor getestet und es zeigt gut an.

Aber Qt zeigt die ganze Zeichenfolge mit allen geschweiften Klammern, Schlüsselwörter und Backslashes anstelle von "Dies ist fett roter Text". Was mache ich falsch?

Vielen Dank für Ihre Hilfe.

Antwort

52

Verwenden Sie die HTML-Formatierung: <b><font... etc </b>.

Qt Designer hat es wie folgt aus: <span style=" font-size:8pt; font-weight:600; color:#aa0000;">TextLabel</span>

+11

Möglicherweise müssen Sie das Attribut textFormat von QLabel auf Qt :: RichText setzen. – dwj

3

Sie können es auch programmgesteuert mit der settext-Funktion tun. Etwas wie dieses:

QString labelText = "<P><b><i><FONT COLOR='#ff0000' FONT SIZE = 4>"; 
labelText .append(Text what u want to display); 
labelText .append("</i></b></P></br>"); 
QLabel label->setText(labelText); 

Sie können es in einer einzelnen Linie auch tun.

12

können Sie Qt StyleSheets verwenden und stellen Sie die styleSheet Eigenschaft QLabel

warning->setStyleSheet("font-weight: bold; color: red"); 

Qt meisten CSS-Stile auf seiner QWidget abgeleiteten Klassen unterstützt. Sie müssen das Textformat nicht auf Qt::RichText setzen, damit dies funktioniert.

+0

Vielen Dank. das hat für mich funktioniert :) –

Verwandte Themen