crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> События нажатия клавиш в консоли...
ViGOur
  опции профиля:
сообщение 11.12.2007, 15:28
Сообщение #1


Мастер
******

Группа: Модератор
Сообщений: 3296
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

Спасибо сказали: 231 раз(а)




Репутация:   40  


Думал, что можно отлавливать события нажатия клавиш в консоли с помощью QKeyEvent, сделал так:
#include <QtCore/QCoreApplication>
#include <QKeyEvent>


class KeyPressEater : public QObject
{
protected:
    bool eventFilter(QObject *obj, QEvent *event);
};


bool KeyPressEater::eventFilter(QObject *obj, QEvent *event)
{
    if (event->type() == QEvent::KeyPress)
    {
        QKeyEvent *keyEvent = static_cast<QKeyEvent *>(event);
        qDebug("Ate key press %d", keyEvent->key());
        return true;
    }
    else
    {
        // standard event processing
        return QObject::eventFilter(obj, event);
    }
}

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    KeyPressEater *pKeyPressEater = new KeyPressEater();
    a.installEventFilter( pKeyPressEater);

    return a.exec();
}
Но так я не могу получить нажатия клавиш. :(
Почему? Как мне всетаки можно получить нажатия клавиш в консоли?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
2 страниц V   1 2 >  
Начать новую тему
Ответов (1 - 9)
Гость_klochec_v_*
сообщение 12.12.2007, 11:51
Сообщение #2





Гости








    


Цитата(ViGOur @ 11.12.2007, 15:28) *
Думал, что можно отлавливать события нажатия клавиш в консоли с помощью QKeyEvent, сделал так:
#include <QtCore/QCoreApplication>
#include <QKeyEvent>


class KeyPressEater : public QObject
{
protected:
    bool eventFilter(QObject *obj, QEvent *event);
};


bool KeyPressEater::eventFilter(QObject *obj, QEvent *event)
{
    if (event->type() == QEvent::KeyPress)
    {
        QKeyEvent *keyEvent = static_cast<QKeyEvent *>(event);
        qDebug("Ate key press %d", keyEvent->key());
        return true;
    }
    else
    {
        // standard event processing
        return QObject::eventFilter(obj, event);
    }
}

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    KeyPressEater *pKeyPressEater = new KeyPressEater();
    a.installEventFilter( pKeyPressEater);

    return a.exec();
}
Но так я не могу получить нажатия клавиш. :(
Почему? Как мне всетаки можно получить нажатия клавиш в консоли?

может я глупость предлагаю, но все же стандартные функции с и с++ никто не отменял в Qt, можно использовать scanf и т.д. т.п. я к примеру использую для выводаотладочной информации в консоль std::cout.
с другой стороны знать бы для чего именно это необходимо делать, может в более подробном контексте задачи стандартные функции и не пригодятся?

еще идея. нажатия клавиш отслеживаются, если не ощибаюсь, при получении фокуса ввода, может стоит ожидать в консоли нажатия клавиши и тогда получится отследить событие???
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ViGOur
  опции профиля:
сообщение 12.12.2007, 11:56
Сообщение #3


Мастер
******

Группа: Модератор
Сообщений: 3296
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

Спасибо сказали: 231 раз(а)




Репутация:   40  


Это нужно для вывода информации или завершения работы при нажатии определенных кнопок...

Со стандартным то все понятно, мне вот интересно можно ли Qt'шные события обрабатывать в консоли или нет. :)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Tonal
  опции профиля:
сообщение 12.12.2007, 11:58
Сообщение #4


Активный участник
***

Группа: Участник
Сообщений: 452
Регистрация: 6.12.2007
Из: Новосибирск
Пользователь №: 34

Спасибо сказали: 69 раз(а)




Репутация:   17  


Мне кажется, Qt не работает с событиями консоли.
По крайней мере, я о таком не слышал.

С консолью можно работать, или стандартными функциями с/с++, или библиотеками типа curses - в зависимости от операционки.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Гость_klochec_v_*
сообщение 12.12.2007, 12:10
Сообщение #5





Гости








    


Цитата(ViGOur @ 12.12.2007, 11:56) *
Это нужно для вывода информации или завершения работы при нажатии определенных кнопок...

Со стандартным то все понятно, мне вот интересно можно ли Qt'шные события обрабатывать в консоли или нет. :)

тогда единственный вариант, попробовать ожидать ввода в консоли...
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ViGOur
  опции профиля:
сообщение 12.12.2007, 12:11
Сообщение #6


Мастер
******

Группа: Модератор
Сообщений: 3296
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

Спасибо сказали: 231 раз(а)




Репутация:   40  


Я догадываюсь, но как говорил товарищ Берия: "Попытка не пытка" :)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Гость_klochec_v_*
сообщение 14.12.2007, 0:37
Сообщение #7





Гости








    


Цитата(ViGOur @ 12.12.2007, 12:11) *
Я догадываюсь, но как говорил товарищ Берия: "Попытка не пытка" :)

ну что как успехи???
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ViGOur
  опции профиля:
сообщение 14.12.2007, 9:27
Сообщение #8


Мастер
******

Группа: Модератор
Сообщений: 3296
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

Спасибо сказали: 231 раз(а)




Репутация:   40  


Пока не судьба, попадаю туда только при получении ‡QEvent::ChildInserted, в ближайшее время попробую другие, я тут отпишу... :)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Georgest
  опции профиля:
сообщение 25.12.2007, 13:26
Сообщение #9


Новичок


Группа: Новичок
Сообщений: 3
Регистрация: 25.12.2007
Пользователь №: 54

Спасибо сказали: 0 раз(а)




Репутация:   0  


Класс
QKeyEvent
- часть модуля QtGui. В консоли принципиально не работает.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ViGOur
  опции профиля:
сообщение 25.12.2007, 14:38
Сообщение #10


Мастер
******

Группа: Модератор
Сообщений: 3296
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

Спасибо сказали: 231 раз(а)




Репутация:   40  


Цитата(Georgest @ 25.12.2007, 13:26) *
- часть модуля QtGui. В консоли принципиально не работает.
Да я уже это понял. :)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

2 страниц V   1 2 >
Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


3 чел. читают эту тему (гостей: 3, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 22.12.2024, 14:40