keypressevent

Alles rund um die Programmierung mit Qt
Antworten
Erni35
Beiträge: 15
Registriert: 21. Juli 2009 21:49

keypressevent

Beitrag 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
AuE
Beiträge: 918
Registriert: 5. August 2008 10:58

Beitrag von AuE »

An was hast dich dran gehangen?
Src?
Erni35
Beiträge: 15
Registriert: 21. Juli 2009 21:49

Beitrag 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
AuE
Beiträge: 918
Registriert: 5. August 2008 10:58

Beitrag 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...
Erni35
Beiträge: 15
Registriert: 21. Juli 2009 21:49

Beitrag 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
Erni35
Beiträge: 15
Registriert: 21. Juli 2009 21:49

Beitrag 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
Antworten