2012-01-17 38 views
6

Tengo un QLabel que contiene texto enriquecido.
Quiero extraer solo el 'texto' real (visible) del QLabel, y ninguno del código para formatear.
Necesito esencialmente una función similar al '.toPlainText' método de otro Qt Widgets.Obtener texto sin formato desde una QLabel con texto enriquecido

no puedo simplemente llamar .text() y la cadena de manipular a distancia las etiquetas HTML como se sugiere en este hilo Get plain text from QString with HTML tags, ya que el QString devuelta contiene todas las tonterías <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">.

¿Cómo se extrae el texto sin formato?

(estoy abierto a cualquier método, aunque indirecta, por ejemplo, funciones. Pre-existentes que convierten a texto sin formato html)

Gracias!

Especificaciones:
pitón 2.7.2
PyQt4
Windows 7

+0

No lo he probado, pero parece que 'QTextCodec' es lo que necesita (documentación en http://developer.qt.nokia.com/doc/qt-4.8/qtextcodec.html). – TonyK

+0

RTF no parece ser una codificación compatible (a menos que me falta algo). No importa, he encontrado un trabajo sucio –

+0

¿No puedes tratar Qt Rich Text como html? El documento de Qt aquí (http://doc.qt.nokia.com/4.7-snapshot/qml-text.html) dice: "El texto enriquecido se define mediante el marcado de estilo HTML". – TonyK

Respuesta

10

Utilice un QTextDocument para hacer la conversión:

doc = QtGui.QTextDocument() 
doc.setHtml(label.text()) 
text = doc.toPlainText() 
+0

Oh sí, un poco más directo que mi método. Avergonzado, me perdí eso: | –

1

He aquí un trabajo desordenado alrededor (para Python - PyQt)

def Extract_PlainText(label): 
    Rtf_text = label.text() 
    Temp_Obj = QtGui.QTextEdit() 
    Temp_Obj.setText(Rtf_text) 
    Plain_text = Temp_Obj.toPlainText() 
    del Temp_Obj 
    return Plain_text 

Inspirado por http://bytes.com/topic/net/answers/707370-convert-rtf-plain-text

+0

Por supuesto, el 'del Temp_Obj' es completamente innecesario, pero me parece pintoresco –

Cuestiones relacionadas