Prelevare Caratteri dal text Edit
-
Ciao a tutti.
Ho creato una semplice applicazione di textEdit.
Vorrei prelevare il singolo carattere ogni volta che l'utente lo scrive tramite tastiera.
Avevo pensato ad una soluzione del genere:// Questo metodo gestisce per lo più l'inserimento dei caratteri void MainWindow::on_textEdit_textChanged() { // prende tutta la stringa che appare QString str= ui->textEdit->toPlainText(); // se ho cancellato tutto quello che avevo scritto, pos deve ripartire da zero, per andare a salvare // la nuova parola che scriverò dall'inizio if (str.size()==0){ pos=0; }else { // se conta è minore di str.size significa che sto inserendo senza aver fatto nessuna eliminazione if(pos<str.size()){ QChar char_prel=str.at(pos); pos++; chars.push_back(char_prel); }else // ho eliminato: non conosco dove ho eliminato (in mezzo, alla fine o all'ìnizio) quindi salvo nuovamente tutto { pos=0; QString str=ui->textEdit->toPlainText(); chars.clear(); for(int i=0;i<str.length();i++){ QChar char_prel=str.at(i); chars.push_back(char_prel); pos++; } } } }
Il problema di questo codice però sta nel fatto che ogni volta che viene inserito un carattere, si genera un evento, e viene letta l'intera stringa che c'è sul foglio di editor. Questo non è molto efficiente, in quanto io ho bisogno di lavorare con ogni singolo carattere.
Quale potrebbe essere una soluzione alternativa?
Grazie -
@Martinuccia_96
Ogni singolo carattere cosa significa?? Perche' se hai bisogno di tutti ogni volta ovviamente devi leggere l'intero testo, puoi ottimizzare tenendoti di volta in volta salvato il testo e fare una sorta di confronto oppure fare un parser un po' piu' avanzato tipo "clang-format" ma comunque se ti servono tutti in ogni caso devi averli da qualche parte... -
puoi usare questo segnale https://doc.qt.io/qt-5/qtextdocument.html#contentsChange di
ui->textEdit->document()