QTextEdit bzw. QString in ASCII7
QTextEdit bzw. QString in ASCII7
Hallo,
ich habe ein textedit-Feld und möchte nur Eingaben aus dem ASCII 7 Zeichensatz erlauben.
Da der Validator nur beim LineEdit funktioniert, muss ich das irgendwie anders schaffen. Ich habe schon versucht bei jeder Eingabe den Text in einen String zu schreiben und dort zu überprüfen.
Vielleicht hat jemand ne Lösung, wäre super...
ich habe ein textedit-Feld und möchte nur Eingaben aus dem ASCII 7 Zeichensatz erlauben.
Da der Validator nur beim LineEdit funktioniert, muss ich das irgendwie anders schaffen. Ich habe schon versucht bei jeder Eingabe den Text in einen String zu schreiben und dort zu überprüfen.
Vielleicht hat jemand ne Lösung, wäre super...
-
Christian81
- Beiträge: 7319
- Registriert: 26. August 2004 14:11
- Wohnort: Bremen
- Kontaktdaten:
-
Christian81
- Beiträge: 7319
- Registriert: 26. August 2004 14:11
- Wohnort: Bremen
- Kontaktdaten:
Solange du nur plainTexst erlaubst sollte es doch kein Problem sein.
Alle Zeichen durchgehen und schauen ob der char ascii ist oder nicht. Wobei das wohl performancemässig noch etwas optimiert werden müsste (nur den neuen Text durchsuchen wenn möglich)
Alle Zeichen durchgehen und schauen ob der char ascii ist oder nicht. Wobei das wohl performancemässig noch etwas optimiert werden müsste (nur den neuen Text durchsuchen wenn möglich)
MfG Christian
'Funktioniert nicht' ist keine Fehlerbeschreibung
'Funktioniert nicht' ist keine Fehlerbeschreibung
Re: QTextEdit bzw. QString in ASCII7
Ich würde den keyPressEvent überschreiben und so nur bestimmte Zeichen erlauben. Meiner Meinung nach der einzige gangbare Weg, bei allem anderen hast Du sonst schon unerwünschte Zeichen im String und müßtest sie wieder löschen.lefrosch hat geschrieben:ich habe ein textedit-Feld und möchte nur Eingaben aus dem ASCII 7 Zeichensatz erlauben.
Die deutsche Schriftsprache ist case-sensitive. Außerdem gibt es eine Interpunktionsnorm. Wenn manch einer seine Programme genauso schlampig schreibt, wie sein Posting hier, dann sollte er es lieber bleiben lassen.
hmm, also alles in eine liste oder wie?
ich check jetzt langsam garnichts mehr oder ich sitz voll auf dem schlauch.
kann ich mit regexp nicht irgendwie alle nichtzutreffenden chars löschen?
ich will ja nur folgende zeichen zur eingabe ermöglichen, ascii 7 halt...
!"#$%&'()*+,-./0123456789:;<=>?
@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_
`abcdefghijklmnopqrstuvwxyz{|}~
@macman: aber wenn man per c&p einfügt, hab ich das doch auch wieder umgangen.
ich check jetzt langsam garnichts mehr oder ich sitz voll auf dem schlauch.
kann ich mit regexp nicht irgendwie alle nichtzutreffenden chars löschen?
ich will ja nur folgende zeichen zur eingabe ermöglichen, ascii 7 halt...
!"#$%&'()*+,-./0123456789:;<=>?
@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_
`abcdefghijklmnopqrstuvwxyz{|}~
@macman: aber wenn man per c&p einfügt, hab ich das doch auch wieder umgangen.
-
Christian81
- Beiträge: 7319
- Registriert: 26. August 2004 14:11
- Wohnort: Bremen
- Kontaktdaten:
sorry, aber ich bin glaub zu blöd.
ich habe weise den inhalt meines feldes einem string zu:
QString text = ui.textEdit->toPlainText();
und dann? wie überprüfe ich jedes einzelne zeichen? der string kann bis zu 100 zeichen lang sein.
sorry der dummen fragen, aber ich bin halt noch nicht lang dabei...
ich habe weise den inhalt meines feldes einem string zu:
QString text = ui.textEdit->toPlainText();
und dann? wie überprüfe ich jedes einzelne zeichen? der string kann bis zu 100 zeichen lang sein.
sorry der dummen fragen, aber ich bin halt noch nicht lang dabei...
-
Christian81
- Beiträge: 7319
- Registriert: 26. August 2004 14:11
- Wohnort: Bremen
- Kontaktdaten:
Doku lesen
Länge: http://doc.trolltech.com/4.3/qstring.html#length
Position: http://doc.trolltech.com/4.3/qstring.html#at
Länge: http://doc.trolltech.com/4.3/qstring.html#length
Position: http://doc.trolltech.com/4.3/qstring.html#at
MfG Christian
'Funktioniert nicht' ist keine Fehlerbeschreibung
'Funktioniert nicht' ist keine Fehlerbeschreibung
ohohoh, da hätte ich ja auch draufkommen können.
DANKE
aber mit dem vergleichen hab ich noch so meine probs:
irgendwie mag das so nicht.
DANKE
aber mit dem vergleichen hab ich noch so meine probs:
Code: Alles auswählen
QString text = ui.textEdit->toPlainText();
for( int i=0; i<text.length()-1; i++ ) {
if( text.at(i).toAscii()>127 ) {
text.remove(i,1);
}
} -
Christian81
- Beiträge: 7319
- Registriert: 26. August 2004 14:11
- Wohnort: Bremen
- Kontaktdaten:
Mag nicht ist ne sehr schlechte Ausssage...
Es ist ausserdem sinnvoll von hinten anzufangen da Du Dir sonst ggf. einen crash einfängst.
Es ist ausserdem sinnvoll von hinten anzufangen da Du Dir sonst ggf. einen crash einfängst.
Code: Alles auswählen
QString text = ui.textEdit->toPlainText();
for( int i=text.length()-1; i>=0; --i ) {
if( text.at(i).toAscii()>127 ) {
text.remove(i,1);
}
}
MfG Christian
'Funktioniert nicht' ist keine Fehlerbeschreibung
'Funktioniert nicht' ist keine Fehlerbeschreibung
-
Christian81
- Beiträge: 7319
- Registriert: 26. August 2004 14:11
- Wohnort: Bremen
- Kontaktdaten:
Ok, in diesem Fall kein Crash sondern ggf. das nicht-Löschen von einigen non-ASCII-7 chars.lefrosch hat geschrieben:danke. warum kann es zu einem crash kommen, wenn ich von vorne anfange?
i = 5
and 5. und 6. Stelle ist ein non-Ascii.
Du löscht das 5, Position 6 wird die neue Position 5, die for-Schleife zählt eins hoch und i = 6 ...
MfG Christian
'Funktioniert nicht' ist keine Fehlerbeschreibung
'Funktioniert nicht' ist keine Fehlerbeschreibung
kann das sein, dass toascii nicht funktioniert?
//gibt mir immer den eingegebenen buchstaben aus und nicht den asciiwert.
Code: Alles auswählen
qDebug()<< text.at(i).toAscii();