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?