Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. International
  3. Italian
  4. Prelevare Caratteri dal text Edit
Qt 6.11 is out! See what's new in the release blog

Prelevare Caratteri dal text Edit

Scheduled Pinned Locked Moved Unsolved Italian
3 Posts 3 Posters 1.0k Views 2 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • M Offline
    M Offline
    Martinuccia_96
    wrote on last edited by
    #1

    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

    1 Reply Last reply
    0
    • guerinoniG Offline
      guerinoniG Offline
      guerinoni
      wrote on last edited by
      #2

      @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...

      1 Reply Last reply
      0
      • VRoninV Offline
        VRoninV Offline
        VRonin
        wrote on last edited by
        #3

        puoi usare questo segnale https://doc.qt.io/qt-5/qtextdocument.html#contentsChange di ui->textEdit->document()

        "La mort n'est rien, mais vivre vaincu et sans gloire, c'est mourir tous les jours"
        ~Napoleon Bonaparte

        On a crusade to banish setIndexWidget() from the holy land of Qt

        1 Reply Last reply
        0

        • Login

        • Login or register to search.
        • First post
          Last post
        0
        • Categories
        • Recent
        • Tags
        • Popular
        • Users
        • Groups
        • Search
        • Get Qt Extensions
        • Unsolved