2009-09-23 42 views
31

Voglio scrivere una sola linea rossa nella mia applicazione usando Qt.Come creare un'etichetta di testo in grassetto rosso in Qt?

Per quanto ho capito, vorrei creare un QLabel, impostare la sua textFormat a rich text e dare una stringa di testo ricco da visualizzare:

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

Ho testato questo ricco stringa di testo in un editor di testo ricco e viene visualizzato bene.

Ma Qt visualizza l'intera stringa con tutte le parentesi, le parole chiave e le barre rovesciate anziché "questo è il testo in grassetto rosso". Che cosa sto facendo di sbagliato?

Grazie per il vostro aiuto.

risposta

52

Provare a utilizzare la formattazione HTML: <b><font... etc </b>.

Qt Designer lo fa in questo modo: <span style=" font-size:8pt; font-weight:600; color:#aa0000;">TextLabel</span>

+11

Potrebbe essere necessario impostare l'attributo textFormat di QLabel su Qt :: RichText. – dwj

3

È inoltre possibile farlo a livello di codice utilizzando la funzione settext. Qualcosa del genere:

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

Si può fare anche su una singola riga.

12

È possibile utilizzare Qt StyleSheets e impostare la proprietà styleSheet di QLabel

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

Qt supporta la maggior parte degli stili CSS sui suoi QWidget classi -derived. Non è necessario impostare il formato di testo su Qt::RichText affinché funzioni.

+0

Grazie mille. quello ha funzionato per me :) –

Problemi correlati