Название: Почему не сразу приходит QKeyEvent? Отправлено: Caduceus от Июль 30, 2010, 12:22 Делаю в главном окне вот такое:
Код: bool MyMainWindow::eventFilter(QObject *obj, QEvent *event) И как только запускаю прогу - не заходит он в ветку "if" Но стоит в проге немного потыкаться, подергать контролы - и начинает заходить.. Что это? Название: Re: Почему не сразу приходит QKeyEvent? Отправлено: kibsoft от Июль 30, 2010, 12:48 Видать нечего перехватывать при запуске :) а как подергаешься, появляются события и фильтр работает.
Название: Re: Почему не сразу приходит QKeyEvent? Отправлено: Caduceus от Июль 30, 2010, 12:56 Прога запускается, окно открывается. Окно проги активно. Жму - и ничего. Не понятно почему.
Название: Re: Почему не сразу приходит QKeyEvent? Отправлено: pastor от Июль 30, 2010, 14:38 Возможно фокус стоит на другом виджете. Попробуй явно передать фокус при помощи setFocus
Название: Re: Почему не сразу приходит QKeyEvent? Отправлено: Caduceus от Июль 30, 2010, 14:44 Так при чем тут виджет. Я ж у MainWindow переопределил. Туда разве не все сыпятся?
Название: Re: Почему не сразу приходит QKeyEvent? Отправлено: pastor от Июль 30, 2010, 14:58 Если фокус стоит на QLineEdit, то причем тут MainWindow?
Название: Re: Почему не сразу приходит QKeyEvent? Отправлено: Caduceus от Июль 30, 2010, 15:24 Эмм, я думал он всех ловит, а потому уже по детям распределяет....
А куда сунуть, чтоб все сообщеняи клавы всегда ловились? Название: Re: Почему не сразу приходит QKeyEvent? Отправлено: lit-uriy от Июль 30, 2010, 15:38 >>Я ж у MainWindow переопределил. Туда разве не все сыпятся?
а на какой объект фильтр событий поставил? Если у тебя, например, два lineEdit1 и lineEdit2, фильтр стоит только на первый. А по умолчанию фокус на втором. То этот второй и получает события. Попробуй сделать, как pastor говорит Название: Re: Почему не сразу приходит QKeyEvent? Отправлено: kibsoft от Июль 30, 2010, 15:44 Код: А куда сунуть, чтоб все сообщеняи клавы всегда ловились? Где object - указатель на объект, с которого нужно ловить события. Если нужно со всех, поставь на все фильтр. Название: Re: Почему не сразу приходит QKeyEvent? Отправлено: Caduceus от Июль 30, 2010, 15:56 Так у меня и есть в кончтрукторе главного окна installEventFilter(this);
Название: Re: Почему не сразу приходит QKeyEvent? Отправлено: kibsoft от Июль 30, 2010, 16:03 Цитировать Так у меня и есть в кончтрукторе главного окна installEventFilter(this); Я имею ввиду, например есть у тебя в главном окне QTextEdit и ты хочешь, чтобы с него тоже обрабатывались события в eventFilter, тогда в конструкторе также:Код: textEdit->installEventFilter(this); Название: Re: Почему не сразу приходит QKeyEvent? Отправлено: lit-uriy от Июль 30, 2010, 16:06 Так у меня и есть в кончтрукторе главного окна installEventFilter(this); а какой смысл ставить фильтр событий на самого себя, они и так прийдутНазвание: Re: Почему не сразу приходит QKeyEvent? Отправлено: Caduceus от Июль 30, 2010, 16:11 2kibsoft
И что так для всех детей???? 2lit-uriy А вон нифига. Не заходил он в эту функецию пока так не проинсталлил Название: Re: Почему не сразу приходит QKeyEvent? Отправлено: lit-uriy от Июль 30, 2010, 16:17 >>Не заходил он в эту функецию пока
блин, а с чего ради он в неё будет заходит? Эта функция - обработчик события фильтра. А для обработки событий клавиатуры есть своя функция. Название: Re: Почему не сразу приходит QKeyEvent? Отправлено: kibsoft от Июль 30, 2010, 16:22 Цитировать И что так для всех детей? Ну для всех виджетов, которые хочешь обрабатывать. Я не уверен, что тебе понадобиться обрабатывать клавиши с label'а например..Название: Re: Почему не сразу приходит QKeyEvent? Отправлено: SASA от Август 02, 2010, 10:02 По-моему Caduceus хочет сделать набор горячих клавиш. Может их и делать, а не заморачиваться на отлов сообщений, фильтры и прочее.
|