Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум на CrossPlatform.RU _ Qt GUI _ keyPressEvent не срабатывает на "Key_Up" и "Key_Down"

Автор: potkin 23.11.2010, 12:24

Есть QTableView.
Надо на событие "нажата клавиша" "Up" или "Down" среагировать. Делаю так:

void RuhCinCap::keyPressEvent (QKeyEvent * e)
{
    switch(e->key())
        {
        case Qt::Key_Up:
            ShowRuhCinCap_Data();
            break;
        case Qt::Key_Down:
            ShowRuhCinCap_Data();
            break;
        }
}

Не реагирует, даже так:
void RuhCinCap::keyPressEvent (QKeyEvent * e)
{
       ShowRuhCinCap_Data();
}


А реагирует только на нажатие клавиш типа: Ентер, F1, F2, ... Esc, ... А вот, мне бы надо "реакцию" на клавиши: вверх, вниз, можно и влево и вправо ...
Может кто знает ???

Автор: crashsp 23.11.2010, 15:42

Скопировал твой код и все работает, только добавил в конец QTableView::keyPressEvent(event); но дело не в этом...
так что смотри свои код...

Автор: potkin 23.11.2010, 15:49

crashsp,

Цитата
только добавил в конец QTableView::keyPressEvent(event);

А в конец чего добавили, если не секрет ???

Автор: crashsp 23.11.2010, 15:54

Цитата(potkin @ 23.11.2010, 16:49) *
crashsp,
Цитата
только добавил в конец QTableView::keyPressEvent(event);

А в конец чего добавили, если не секрет ???


) не секрет, в конец функции void RuhCinCap::keyPressEvent (QKeyEvent * e)

ты ее реализуешь в точно в QTableView ???


Автор: potkin 24.11.2010, 10:09

crashsp,

Цитата
ты ее реализуешь в точно в QTableView ???

Нет.
Можешь свой рабочий пример выслать ???

Автор: crashsp 24.11.2010, 11:08

Тут высылать то не чего
Тебе же я как понимаю нужно ловить событие в QTableView соответственно
надо переопределить событие именно в своем классе унаследованном от QTableView
простой пример
h.файл

#include <QTableView>
class tableView:public QTableView
{
public:
    tableView(QWidget* parent = 0);
    void keyPressEvent(QKeyEvent *event);
};

cpp.файл
#include "tableview.h"
#include <QDebug>
#include <QKeyEvent>
tableView::tableView(QWidget *parent):QTableView(parent)
{

}

void tableView::keyPressEvent(QKeyEvent *event){
    switch(event->key()){
    case Qt::Key_Up:

             qDebug()<<"Press Up";
               break;

           case Qt::Key_Down:
              qDebug()<<"Press Down";
               break;

    }
    QTableView::keyPressEvent(event);
}


Вот и все ...

Автор: potkin 24.11.2010, 17:45

crashsp,
Спасибо )))

Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)