[gelöst]QTablewidgetItem->setText() - unerwünschtes Ergebnis
Verfasst: 20. November 2013 13:15
Hallo zusammen,
ich möchte die Eingabe von Sonderzeichen in ein QTablewidgetItem vereinfachen. Dazu werte ich im Eventfilter die Tastaturereignisse aus und hänge erkannte Sonderzeichen an denZellentext:
Jetzt kann ich per Tastatur weitere (Normal-)Zeichen in die Zelle schreiben und diese auch sehen. Wenn ich dann aber noch ein Sonderzeichen über die Methode addSpecialKey() anhänge, ohne die Zelle zwischendurch zu verlassen, sehe ich nur noch die beiden Sonderzeichen in der Tabelle.
Verlasse ich die Zelle vor dem zweiten Sonderzeichen, betrete sie erneut und hänge dann das Sonderzeichen an, bekomme ich das gewünschte Ergebnis.
Was mache ich falsch?
ich möchte die Eingabe von Sonderzeichen in ein QTablewidgetItem vereinfachen. Dazu werte ich im Eventfilter die Tastaturereignisse aus und hänge erkannte Sonderzeichen an denZellentext:
Code: Alles auswählen
myClass::myClass(QWidget *parent)
{
...
myTable->installEventFilter(this);
...
}
bool myClass::eventFilter(QObject *obj, QEvent *event)
{
if(event->type() == QEvent::KeyPress)
{
QKeyEvent *keyEvent = static_cast<QKeyEvent *>(event);
switch(keyEvent->key())
{
case Qt::Key_F1: addSpecialKey("Ø"); break;
case Qt::Key_F2: addSpecialKey("±"); break;
....
default: keyEvent->ignore(); break;
}
}
else
{
return QObject::eventFilter(obj, event);
}
}
void myClass::addSpecialKey(const char *text)
{
...
myTable->currentItem()->setText(myTable->currentItem()->text() + text);
...
}
Verlasse ich die Zelle vor dem zweiten Sonderzeichen, betrete sie erneut und hänge dann das Sonderzeichen an, bekomme ich das gewünschte Ergebnis.
Was mache ich falsch?