c++ - manejo - ¿Cómo crear una etiqueta de texto roja y audaz en Qt?
manejo de archivos en qt (4)
Quiero escribir una sola línea roja en negrita en mi aplicación usando Qt.
Por lo que yo entiendo, crearía QLabel, establecería textFormat en texto enriquecido y le daría una cadena de texto enriquecido para mostrar:
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}");
Probé esta cadena de texto enriquecido en un editor de texto enriquecido y se muestra bien.
Pero Qt muestra toda la cadena con todas las llaves, palabras clave y barras invertidas en lugar de "esto es texto rojo en negrita". ¿Qué estoy haciendo mal?
Gracias por tu ayuda.
Intente usar el formato HTML: <b><font... etc </b>
.
Qt Designer lo hace así: <span style=" font-size:8pt; font-weight:600; color:#aa0000;">TextLabel</span>
Puede usar Qt StyleSheets y establecer la propiedad styleSheet
de QLabel
warning->setStyleSheet("font-weight: bold; color: red");
Qt es compatible con la mayoría de los estilos CSS en sus clases derivadas de QWidget
. No necesita establecer el formato de texto en Qt::RichText
para que esto funcione.
Qt usa un subconjunto de HTML simple para formatear.
También puede hacerlo mediante programación utilizando la función settext
. Algo como esto:
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);
Puedes hacerlo en una sola línea también.