Domanda

Voglio formattare un testo selezionato in un QTextEdit facendo clic su un pulsante. Per axample Voglio fare grassetto se non è grassetto, o no-bold se è in grassetto. Please help me con un esempio.

Modifica

In realtà ho trovato già un codice - qt demo per editor di testo che fa quello che mi serve:

void
MyTextEdit::boldText(bool isBold) //this is the SLOT for the button trigger(bool)
{
    QTextCharFormat fmt;
    fmt.setFontWeight(isBold ? QFont::Bold : QFont::Normal);
    mergeFormatOnWordOrSelection(fmt);
}

void
MyTextEdit::mergeFormatOnWordOrSelection(const QTextCharFormat &format)
 {
     QTextCursor cursor = m_textEdit->textCursor();
     if (!cursor.hasSelection())
         cursor.select(QTextCursor::WordUnderCursor);
     cursor.mergeCharFormat(format);
     m_textEdit->mergeCurrentCharFormat(format);
 }

Ma non riesco a capire che cosa returnes TextCursor () metodo, e come si sta facendo la fusione delle proprietà? Solo alcuni formati vengono modificate, alcuni di loro rimangono costanti. Come mergeCharFormat Funzione capisce cosa cambiare e cosa lasciare così com'è. Si prega di spiegare a me solo queste 2 cose. Grazie.

È stato utile?

Soluzione

Il TextCursor () restituisce un TextCursor che contiene la posizione del cursore si usa in TextEdit, vedi QTextCursor nelle classi Qt. Così selezionando il testo che è contenuto entro l'inizio cursore e posizione finale, si ha il testo che è attualmente Highlited.

Per quanto riguarda il mergeCharFormat, immagino che è utilizzato per applicare un nuovo stato (grassetto, corsivo, sottolineato) e per mantenere quelli esistenti. Dire il testo è già sottolineato e si applica in grassetto, si vorrebbe mantenere entrambi.

Spero che questo aiuti.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top