Steuerzeichen in QString

Alles rund um die Programmierung mit Qt
Antworten
darkshine
Beiträge: 102
Registriert: 20. August 2010 11:39

Steuerzeichen in QString

Beitrag 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
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Re: Steuerzeichen in QString

Beitrag von franzf »

Wie schaut der String denn in deinem Code aus? Und was wird ausgegeben?
darkshine
Beiträge: 102
Registriert: 20. August 2010 11:39

Re: Steuerzeichen in QString

Beitrag 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
darkshine
Beiträge: 102
Registriert: 20. August 2010 11:39

Re: Steuerzeichen in QString

Beitrag von darkshine »

Sorry BS steht für Backspace
darkshine
Beiträge: 102
Registriert: 20. August 2010 11:39

Re: Steuerzeichen in QString

Beitrag 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
Antworten