Seite 1 von 1
keypressevent
Verfasst: 28. September 2009 23:07
von Erni35
Guten Abend,
ich habe ein kleines Problem mit Tastenklicks. Auf einem Formular sind zwei TableWidgets und mehrere BushButton platziert. Jetzt möchte ich, egal welches Widget gerade den Fokus hat, mit den Tasten links und rechts Einträge zwischen den TableWidgets verschieben. Zum ersten Test sollten bloß Label ihre Beschriftung ändern. Die Reaktion kam aber erst nach dem zweiten oder dritten Tastendruck oder garnicht. Könnt ihr mir helfen?
Erni35
Verfasst: 29. September 2009 07:41
von AuE
An was hast dich dran gehangen?
Src?
Verfasst: 29. September 2009 10:27
von Erni35
ich habe jetzt die Quellen nicht parat. Habe mich aber an den Beispielen aus der Doku orientiert. im Dialog-Widgethabe ich eine keyPressEvent-Routine eingebaut. Dort sortiere ich, ob es ein keypress-Event und dann filtere ich die Tasten links und rechts heraus. Heute abend stelle ich die Quellen ein.
Erni35
Verfasst: 29. September 2009 12:38
von AuE
Mach am besten mal ein paar Debugausgaben rein damit du checken kannst ob es wirklich nicht ausgelöst wurde.
Und check mal ob es daran liegt welches Widget gerade den Fokus hat...
Verfasst: 29. September 2009 21:54
von Erni35
als erstes ist einer der drei Pushbutton aktiviert. Mit den Pfeilen kann ich zwischen den Schaltern hin und her wechseln und es wird kein keypressevent ausgelöst.
Hier der Startcode aus dem Constructor und die keyPress-Routine:
Code: Alles auswählen
rennfolge_festlegen::rennfolge_festlegen(QWidget *parent, DBdef *datenbank) :
QDialog(parent),
m_ui(new Ui::rennfolge)
{
m_ui->setupUi(this);
setWindowTitle(datenbank->tabelle);
setAcceptDrops(true);
...
...
veranst_tabelle = new mein_TabletWidget(this);
...
}
void rennfolge_festlegen::keyPressEvent(QKeyEvent *event)
{
qDebug() << this->focusWidget()->accessibleName();
switch (event->key())
{
case Qt::Key_Left:
if (event->modifiers() & Qt::ControlModifier)
{
nachlinks();
break;
}
case Qt::Key_Right:
if (event->modifiers() & Qt::ControlModifier)
{
nachrechts();
break;
}
default:
QDialog::keyPressEvent(event);
}
}
Der Dialog ist ein Mix aus Elementen im Designer zusammengesetzt und eigenen Komponenten. Das TableWidget ist vom Original abgeleitet und implementiert nur das Drag und Drop.
Erni35
Verfasst: 29. September 2009 22:09
von Erni35
ein paar Sachen habe ich jetzt mit dem qDebug herausgefunden (Danke für den Hinweis).
Die Pfeiltasten werden vom Programm zum Springen zwischen den Komponenten genutzt. Auch in den TableWidgets wird so lange kein Debug-Ereignis geziegt, bis ich alle Spalten durchwandert bin.
Wie bringe ich meine Anwendung nun dazu die Pfeiltasten gleich an meine keypressEvent-Routine weiterzugeben??
Erni35