Sto creando un editor di codice personalizzato con QPlainTextEdit
e QSyntaxHighlighter
e ho riscontrato un problema tecnico. Mi piacerebbe mantenere l'evidenziazione della sintassi anche all'interno di una selezione. Tuttavia, i colori della selezione (colori dell'ambiente) sostituiscono i colori del testo evidenziato da QSyntaxHighlighter
e i tag HTML. Altri attributi come la famiglia di caratteri vengono mantenuti.QSyntaxHighlighter - la selezione del testo ha la precedenza sullo stile
Esempio:
No selezione: Selezione:
(mi piacerebbe Hello
essere verde e World!
essere nero)
Ho anche cercato di impostare il foglio di stile a:
QPlainTextEdit {
selection-color: rgba(0, 0, 0, 0);
selection-background-color: lightblue;
}
Risultato:
Il colore di sfondo si sovrappone al testo e al pozzetto, colore del testo con alpha = 0
non è visibile. L'ho fatto solo per escludere l'idea che il colore della sintassi persista sotto selection-color
. È infatti sovrapposto a selection-background-color
.
Edit: No, se anche ho impostato selection-background-color
-rgba(0, 0, 0, 0)
, non c'è alcuna selezione e non c'è testo in quella selezione. Tutto quello che vedo è lo sfondo.
approccio del seguente frammento che rende la linea intera di cursore evidenziato sembra la strada da percorrere, ma mi sarebbe fondamentalmente finire reimplementare tutti i meccanici di selezione ...
QList<QTextEdit::ExtraSelection> extraSelections;
QTextCursor cursor = textCursor();
QTextEdit::ExtraSelection selection;
selection.format.setBackground(lineHighlightColor_);
selection.format.setProperty(QTextFormat::FullWidthSelection, true);
selection.cursor = cursor;
selection.cursor.clearSelection();
extraSelections.append(selection);
setExtraSelections(extraSelections);
C'è qualche semplice soluzione a questo?
Hai mai trovare una soluzione più semplice? –
@NicolasHolthaus Mi sono dimesso. Se avessi trovato un approccio più semplice (non so se 'QTextEdit :: ExtraSelection' sia una soluzione valida), l'avrei condiviso. – LogicStuff
questa è una limitazione davvero fastidiosa dell'evidenziatore di sintassi. –