Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Qt и кроссплатформенное программирование С/С++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.01.2014, 21:56   #1
snakes
Пользователь
 
Регистрация: 11.05.2013
Сообщений: 32
По умолчанию обработка клавиш в qt (Линукс)

Добрый вечер)
как в qt сделать функцию ,что если нажата клавиша (например стрелка вправо ),то выполнятся какое то действие ,и.т.д.
заранее спасибо)
snakes вне форума Ответить с цитированием
Старый 03.01.2014, 04:12   #2
rrrFer
Санитар
Старожил
 
Аватар для rrrFer
 
Регистрация: 04.10.2008
Сообщений: 2,618
По умолчанию

keyPressEvent эта функция называется?
rrrFer вне форума Ответить с цитированием
Старый 03.01.2014, 11:36   #3
ROD
Linux C++ Qt ARM
Старожил
 
Аватар для ROD
 
Регистрация: 30.11.2008
Сообщений: 3,030
По умолчанию

Ну и еще вам нужен для keyPressEvent (да и для любого другого эвента) - обработчик эвентов (EventFilter). В качестве оного можно назначить как вашу форму, так и специально сделанный для этого объект.
Дилетант широкого профиля.

"Слова ничего не стоят - покажите мне код!" © Линус Торвальдс
ROD вне форума Ответить с цитированием
Старый 03.01.2014, 12:32   #4
snakes
Пользователь
 
Регистрация: 11.05.2013
Сообщений: 32
По умолчанию

а можно пример использование этой функции?
snakes вне форума Ответить с цитированием
Старый 03.01.2014, 16:00   #5
ROD
Linux C++ Qt ARM
Старожил
 
Аватар для ROD
 
Регистрация: 30.11.2008
Сообщений: 3,030
По умолчанию

Прототип функции (для простоты форма сама будет обработчиком событий).

Код:
     bool eventFilter(QObject* object, QEvent* event);
В конструкторе формы:
Код:
installEventFilter(this);//Обращаю внимание, что это обработка событий этой формы.
ui->lineEdit->installEventFilter(this);//А это обработка событий виджета (lineEdit, в нашем случае), лежащего на этой форме.

//Грубо говоря у каждого "обрабатываемого" объекта вызываем installEventFilter и передаем в качеству параметров объект-обработчик.
Сама функция evenFilter (пример):
Код:

bool Widget::eventFilter(QObject* object, QEvent* event)// (Что бы не смущать вас поясню - Widget - это просто имя класса моей формы, ничего специфического так сказать.)
{
    if(object == ui->lineEdit)//Тут обработка эвентов для lineEdit`а, который у нас на нашей форме.
    {
        if (event->type() == QEvent::FocusIn)//Тут у меня эвент - получение фокуса... вы вставьте то, что вам нужно.
        {
        qDebug() << "LineEdit got focus\n";
        return false; //По-идее в случае успеха надо бы true вернуть... но пусть будет так.
        }
    }
Более подробно смотрите в документации к Qt. Она, насколько я знаю, есть в любой сборке QtCreator (ну если только вы ее сами не собирали и умышленно не выкинули ее оттуда)


P.S.

Примеры выдраны из рабочего проекта, но изменены до неузнаваемости и не проверялись на работоспособность.

P.P.S.
Вышеприведенное решение кроссплатформенно. Если вам нужно решение чисто под линукс - попробуйте читать файл /dev/input/keybord
Дилетант широкого профиля.

"Слова ничего не стоят - покажите мне код!" © Линус Торвальдс

Последний раз редактировалось ROD; 03.01.2014 в 16:09.
ROD вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
обработка нажатий клавиш в Qt SiNoNoto Gamedev - cоздание игр: Unity, OpenGL, DirectX 9 28.06.2017 16:42
обработка клавиш из dll AntyDES C# (си шарп) 5 23.10.2012 12:42
Обработка клавиш на TListBox Melanholly Общие вопросы Delphi 2 31.10.2011 14:06
Обработка событий клавиш клавиатуры Synapse Visual C++ 2 20.10.2011 18:37
обработка нажатия клавиш VC++ консоль rest Помощь студентам 0 06.10.2009 07:53