Seite 1 von 1

QTextEdit - insert neuer chars verhindern

Verfasst: 29. Mai 2009 17:06
von mfernau
Hallo!

Ich bin in Sachen Qt ein absoluter Anfänger. Ich arbeite mich gerade ein wenig in die Materie hinein. Erschwerend kommt hinzu, dass ich mit c++ auch noch sehr wenig Erfahrung habe.

Ich schreibe zur Zeit einen Client, der eine SMS versenden soll. Funktioniert schon alles gut soweit. Aber ich möchte ab einer länge von 160 Zeichen keine weiteren Inserts mehr in mein QTextEdit zulassen.
Gibt es ein Signal, dass mich bei einem Insert eines Chars benachrichtigt und den ich dann selektiv einfach "consumen" (also ignorieren lassen) kann? Wie ich mir das denke müsste das ein Signal sein, das 'geworfen' wird _bevor_ das Zeichen in das Model eingefügt wird. Ein späteres wieder herauslöschen würde zwar auch irgendwie funktionieren, wäre aber IMHO eine unsaubere Lösung.

Beste Grüße,
Martin

Verfasst: 29. Mai 2009 17:39
von upsala
Du suchst das keyPressEvent

Verfasst: 29. Mai 2009 18:21
von mfernau
klingt gut.
Kannst Du mir noch sagen wie ich mich da jetzt anmelde für so ein Event? Das wäre optimal :)

Verfasst: 29. Mai 2009 18:26
von upsala
Aber sicher doch: Events and Event filters

Verfasst: 29. Mai 2009 19:19
von mfernau
Super, danke.
Damit komme ich klar. Konnte dann mit

Code: Alles auswählen

ui->message->installEventFilter(this);
das aktuelle Objekt als EventFilter für das erwähnte QTextEdit einrichten. Die folgende Abfrage:

Code: Alles auswählen

bool SendSMS::eventFilter(QObject *obj, QEvent *event) {
   if (obj == ui->message && event->type() == QEvent::KeyPress) {
      // returnt in bestimmten Situationen true
   }
   return false;
}
ermöglicht mir das gewünschte Resultat.

Besten Dank!