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
Steuerzeichen in QString
Re: Steuerzeichen in QString
Wie schaut der String denn in deinem Code aus? Und was wird ausgegeben?
Re: Steuerzeichen in QString
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
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
Sorry BS steht für Backspace
Re: Steuerzeichen in QString
Ich habe es jetzt so gelöst
Nicht sehr elegant aber es funktioniert. Ich hoffe es gibt noch eine bessere Lösung
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));
}
}