Seite 1 von 1

Steuerzeichen in QString

Verfasst: 16. Mai 2012 14:22
von darkshine
Hallo Forum,

ich lasse in einem QPlainTextEdit Fenster einen String anzeigen. Jetzt sind in diesem String auch Steuerzeichen enthalten. z.B "BS" in Hex:0x08.
Diese Steuerzeichen sollen in dem Fenster auch ausgeführt werden. Wenn in meinem String "Hallo Papa BS BS BS BS Mama" steht, dann soll im Fenster "Hallo Mama" stehen.
Dies schaffe ich aber nicht. Die Steuerzeichen werden auch als kleine Vierecke dargestellt.

Vielen Dank für eure Hilfe

Re: Steuerzeichen in QString

Verfasst: 16. Mai 2012 14:30
von franzf
Wie schaut der String denn in deinem Code aus? Und was wird ausgegeben?

Re: Steuerzeichen in QString

Verfasst: 16. Mai 2012 14:44
von darkshine
Auf die Zeile
ui->recvEdit->insertPlainText(QString(port->readAll().toHex())); erhalte ich diese Antwort:

08080808 32 35 31 32 08080808 32 35 32 30 08080808 32 35 32 38 0808080 83 23 53 33 60

Ich lese einen QByteArray von einem ComPort. ( Die Leerzeichen habe ich eingefügt ) Die 08 ist in Ascii ein BackSlash.

Auf die Zeile
ui->recvEdit->insertPlainText(QString(port->readAll())); erhalte ich diese Antwort:

15281536154415521560

eigentlich sollte in meinem Fenster nur die 1560 stehen, weil die vorher durch das BS wieder gelöscht wurden

Re: Steuerzeichen in QString

Verfasst: 16. Mai 2012 15:08
von darkshine
Sorry BS steht für Backspace

Re: Steuerzeichen in QString

Verfasst: 16. Mai 2012 15:29
von darkshine
Ich habe es jetzt so gelöst

Code: Alles auswählen


 QString text = QString(port->readAll());
        for(int i=0; i<=text.size()-1; i++)
        {
            int intText = (int)text.at(i).toAscii();

                if(intText == 8)
                {
                    ui->recvEdit->textCursor().deletePreviousChar();
                }
                else
                {
                    ui->recvEdit->insertPlainText(text.at(i));
                }

        }
Nicht sehr elegant aber es funktioniert. Ich hoffe es gibt noch eine bessere Lösung