2012-01-17 14 views
6

Ho un QLabel che contiene testo RTF.
Desidero estrarre solo il "testo" effettivo (visibile) da QLabel e nessuno del codice per la formattazione.
Ho essenzialmente bisogno di una funzione simile al metodo '.toPlainText' di altri Qt Widgets.Ottieni testo normale da una QLabel con Rich text

non posso semplicemente chiamare .text() e stringa manipolare via le tag html come suggerito in questa discussione Get plain text from QString with HTML tags, dal momento che la tornata QString contiene tutte le <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> sciocchezze.

Come estrarre il testo normale?

(io sono aperto a qualsiasi metodo, anche se indiretta, ad esempio, le funzioni. Pre-esistenti che convertire HTML in testo normale)

Grazie!

Spec:
pitone 2.7.2
PyQt4
Windows 7

+0

Non l'ho provato da solo, ma sembra che 'QTextCodec' sia quello che ti serve (documentazione su http://developer.qt.nokia.com/doc/qt-4.8/qtextcodec.html). – TonyK

+0

RTF non sembra essere una codifica supportata (a meno che manchi qualcosa). Non importa, ho trovato un work-around disordinato –

+0

Non puoi semplicemente trattare Qt Rich Text come html? Il documento Qt qui (http://doc.qt.nokia.com/4.7-snapshot/qml-text.html) dice: "Il rich text è definito usando il markup in stile HTML." – TonyK

risposta

10

Utilizzare un QTextDocument per eseguire la conversione:

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

Oh sì, un po 'più diretto del mio metodo. Imbarazzato mi mancava quello: | –

1

Ecco un lavoro disordinato attorno (per 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 

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

+0

Ofcourse il 'del Temp_Obj' è completamente non necessario, ma trovo pittoresco –

Problemi correlati