Russian Qt Forum
Февраль 10, 2012, 16:16
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Пользовательский интерфейс (GUI)
(Модератор:
Sergeich
) >
Почему не сразу приходит QKeyEvent?
Страниц: [
1
]
2
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Почему не сразу приходит QKeyEvent? (Прочитано 1203 раз)
Caduceus
Частый гость
Offline
Сообщений: 293
Почему не сразу приходит QKeyEvent?
«
:
Июль 30, 2010, 12:22 »
Делаю в главном окне вот такое:
Код:
bool MyMainWindow::eventFilter(QObject *obj, QEvent *event)
{
if (event->type()==QEvent::KeyPress)
{
QKeyEvent *keyevent = static_cast<QKeyEvent*>(event);
if (keyevent->key()==Qt::Key_F3 ) {inc(1);return true;}
if (keyevent->key()==Qt::Key_F4 ) {inc(5);return true;}
if (keyevent->key()==Qt::Key_F2 ) {dec(1);return true;}
if (keyevent->key()==Qt::Key_F1 ) {dec(5);return true;}
}
return QMainWindow::eventFilter(obj, event);
}
И как только запускаю прогу - не заходит он в ветку "if" Но стоит в проге немного потыкаться, подергать контролы - и начинает заходить.. Что это?
Записан
kibsoft
Бывалый
Online
Сообщений: 419
Re: Почему не сразу приходит QKeyEvent?
«
Ответ #1 :
Июль 30, 2010, 12:48 »
Видать нечего перехватывать при запуске
а как подергаешься, появляются события и фильтр работает.
Записан
VoiceTranslator - приложение, которое предоставляет возможности перевода и озвучки текстов.
http://kibsoft.ru
Caduceus
Частый гость
Offline
Сообщений: 293
Re: Почему не сразу приходит QKeyEvent?
«
Ответ #2 :
Июль 30, 2010, 12:56 »
Прога запускается, окно открывается. Окно проги активно. Жму - и ничего. Не понятно почему.
Записан
pastor
Administrator
Джедай : наставник для всех
Offline
Сообщений: 2864
Re: Почему не сразу приходит QKeyEvent?
«
Ответ #3 :
Июль 30, 2010, 14:38 »
Возможно фокус стоит на другом виджете. Попробуй явно передать фокус при помощи setFocus
Записан
Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
Caduceus
Частый гость
Offline
Сообщений: 293
Re: Почему не сразу приходит QKeyEvent?
«
Ответ #4 :
Июль 30, 2010, 14:44 »
Так при чем тут виджет. Я ж у MainWindow переопределил. Туда разве не все сыпятся?
Записан
pastor
Administrator
Джедай : наставник для всех
Offline
Сообщений: 2864
Re: Почему не сразу приходит QKeyEvent?
«
Ответ #5 :
Июль 30, 2010, 14:58 »
Если фокус стоит на QLineEdit, то причем тут MainWindow?
Записан
Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
Caduceus
Частый гость
Offline
Сообщений: 293
Re: Почему не сразу приходит QKeyEvent?
«
Ответ #6 :
Июль 30, 2010, 15:24 »
Эмм, я думал он всех ловит, а потому уже по детям распределяет....
А куда сунуть, чтоб все сообщеняи клавы всегда ловились?
Записан
lit-uriy
Джедай : наставник для всех
Offline
Сообщений: 3294
Re: Почему не сразу приходит QKeyEvent?
«
Ответ #7 :
Июль 30, 2010, 15:38 »
>>Я ж у MainWindow переопределил. Туда разве не все сыпятся?
а на какой объект фильтр событий поставил?
Если у тебя, например, два lineEdit1 и lineEdit2, фильтр стоит только на первый. А по умолчанию фокус на втором. То этот второй и получает события.
Попробуй сделать, как pastor говорит
Записан
Юра.
kibsoft
Бывалый
Online
Сообщений: 419
Re: Почему не сразу приходит QKeyEvent?
«
Ответ #8 :
Июль 30, 2010, 15:44 »
Код:
А куда сунуть, чтоб все сообщеняи клавы всегда ловились?
object->installEventFilter(this);
Где object - указатель на объект, с которого нужно ловить события.
Если нужно со всех, поставь на все фильтр.
Записан
VoiceTranslator - приложение, которое предоставляет возможности перевода и озвучки текстов.
http://kibsoft.ru
Caduceus
Частый гость
Offline
Сообщений: 293
Re: Почему не сразу приходит QKeyEvent?
«
Ответ #9 :
Июль 30, 2010, 15:56 »
Так у меня и есть в кончтрукторе главного окна installEventFilter(this);
Записан
kibsoft
Бывалый
Online
Сообщений: 419
Re: Почему не сразу приходит QKeyEvent?
«
Ответ #10 :
Июль 30, 2010, 16:03 »
Цитировать
Так у меня и есть в кончтрукторе главного окна installEventFilter(this);
Я имею ввиду, например есть у тебя в главном окне QTextEdit и ты хочешь, чтобы с него тоже обрабатывались события в eventFilter, тогда в конструкторе также:
Код:
textEdit->installEventFilter(this);
Записан
VoiceTranslator - приложение, которое предоставляет возможности перевода и озвучки текстов.
http://kibsoft.ru
lit-uriy
Джедай : наставник для всех
Offline
Сообщений: 3294
Re: Почему не сразу приходит QKeyEvent?
«
Ответ #11 :
Июль 30, 2010, 16:06 »
Цитата: Caduceus от Июль 30, 2010, 15:56
Так у меня и есть в кончтрукторе главного окна installEventFilter(this);
а какой смысл ставить фильтр событий на самого себя, они и так прийдут
Записан
Юра.
Caduceus
Частый гость
Offline
Сообщений: 293
Re: Почему не сразу приходит QKeyEvent?
«
Ответ #12 :
Июль 30, 2010, 16:11 »
2kibsoft
И что так для всех детей?
2lit-uriy
А вон нифига. Не заходил он в эту функецию пока так не проинсталлил
Записан
lit-uriy
Джедай : наставник для всех
Offline
Сообщений: 3294
Re: Почему не сразу приходит QKeyEvent?
«
Ответ #13 :
Июль 30, 2010, 16:17 »
>>Не заходил он в эту функецию пока
блин, а с чего ради он в неё будет заходит? Эта функция - обработчик события фильтра.
А для обработки событий клавиатуры есть своя функция.
Записан
Юра.
kibsoft
Бывалый
Online
Сообщений: 419
Re: Почему не сразу приходит QKeyEvent?
«
Ответ #14 :
Июль 30, 2010, 16:22 »
Цитировать
И что так для всех детей?
Ну для всех виджетов, которые хочешь обрабатывать. Я не уверен, что тебе понадобиться обрабатывать клавиши с label'а например..
Записан
VoiceTranslator - приложение, которое предоставляет возможности перевода и озвучки текстов.
http://kibsoft.ru
Страниц: [
1
]
2
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> Печать
=> Интернационализация, локализация
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
=> Архив
===> Программирование
=====> Python
===> Веб программирование
=====> PHP, PERL, CGI
Загружается...