2009-09-23 7 views

Respuesta

17

Puede recuperar la fuente fija predeterminada del sistema utilizando la función de fuente del sistema QFontDatabase (..). Se introdujo en Qt 5.2.

Ejemplo:

const QFont fixedFont = QFontDatabase::systemFont(QFontDatabase::FixedFont) 
+3

y antes Qt 5? – Momergil

+0

En realidad, esto no funcionó en Qt 5 en Linux, pero puede deberse a una mala configuración de fontconfig en nuestra compilación estática de Qt, sin embargo, el 'setStyleHint 'método funcionó. –

15

Para todos los widgets que aceptan texto enriquecido, puede simplemente ponerlo en un bloque pre, es decir, <pre>This is my Text</pre>. Luego usará la fuente de monoespacio de sistemas.

+0

He intentado esto en mi programa y funcionó, pero también añade un salto de línea después de la etiqueta de solicitud previa. No sabía cómo deshacerme de eso, así que probé text y eso funcionó. Sin embargo, no he verificado que mi solución sea portátil. – mjwach

1

Utilizo Courier en Qt tanto en Linux como en Windows.

41

Usted puede utilizar la propiedad style hint de QFont:

QFont font("Monospace"); 
font.setStyleHint(QFont::TypeWriter); 

Si la fuente no se puede encontrar (lo que ocurre con el espacio sencillo en Windows), font matching algorithm intentos de Qt para encontrar una fuente que coincide con la indirecta estilo determinado.

+3

Por curiosidad: ¿por qué no 'QFont :: Monospace'? – kralyk

+4

Una adición útil: ese código solo funciona si pasa un nombre de familia al constructor QFont. De lo contrario, utilizará la familia de fuentes predeterminada, que será de ancho variable, que luego anula la sugerencia de estilo. Tenía que hacer esto, 'QFont font (" ");', cuando no tenía una fuente de monoespacio específica para solicitar. – Harvey

+0

@kralyk Tenía curiosidad también, y probé Windows y noté que 'QFont :: Monospace' no daría como resultado una fuente monoespacial, mientras que' TypeWriter' sí. Aunque realmente no puedo explicar por qué :( – AkiRoss

Cuestiones relacionadas