Problema: Quiero implementar un widget de edición de texto para texto con etiquetas adicionales. Me gustaría que algunas etiquetas sean invisibles en algunos casos para que no distraigan al usuario.Ocultar texto con QSyntaxHighlighter
Medio Ambiente: estoy usando PyQt
y prefieren utilizar QPlainTextWidget
y QSyntaxHighlighter
.
Approach: Con QSyntaxHighlighter
Puedo configurar QTextCharFormat
para las cadenas que coincidan con mis requisitos. QTextCharFormat
me da todas las propiedades de fuente como tamaño, colores, etc. pero: No he encontrado una opción para ocultar el texto o reducir su tamaño a cero.
No quiero quitar o reemplazar las etiquetas, ya que esto introducirá mucho más código (la copia debe contener etiquetas y sin I no puede usar QSyntaxHighlighter
para formatear el texto restante de acuerdo con las etiquetas).
Actualización: Hasta ahora encontré un hack feo. Al establecer QTextFormat :: FontLetterSpacing en un valor pequeño, el texto consumirá menos y menos espacio. En combinación con un color transparente, el texto es algo así como invisible.
Problema: En mi prueba, esto solo funcionaba con espaciamientos de letras de hasta 0.016%. Debajo del espaciado se resetea al 100%.
Bueno, texto sin formato es texto sin formato. Intenta usar el widget no simple. –
No he encontrado las opciones correspondientes en 'QTextEdit'. AFAIK la diferencia se limita al comportamiento de desplazamiento, tablas, marcos y cosas como imágenes. Las funciones que pueden permitir ocultar el texto son las mismas que para 'QPlainTextEdit'. Aparte de eso, hay clases más avanzadas dentro de Qt. QScintilla significaría usar algo completamente diferente. – m2j