crossplatform.ru

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

 
Ответить в данную темуНачать новую тему
> Как перехватить события соответсвующие стандартным Key sequence
wiz29
  опции профиля:
сообщение 29.10.2010, 16:19
Сообщение #1


Старейший участник
****

Группа: Участник
Сообщений: 600
Регистрация: 7.7.2010
Из: Санкт-Петербург
Пользователь №: 1866

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




Репутация:   12  


Доброго времени суток всем.
Собственно вопрос в сабже, а проблема следующая, мне нужно в определенный момент времени запретить переключать дочерние виджеты в mdi.
Использую следующий код
void MainWindow::keyPressEvent(QKeyEvent* event)
{
    if (event->matches(QKeySequence::PreviousChild) ||
            event->matches(QKeySequence::NextChild))
    {
         return;
    }
    QMainWindow::keyPressEvent(event);
}

Условие никогда не выполнятеся. Может проблема в том что виджет mdi area обрабатывает данный сиквенс?

Перехватываю, но толку никакого, даже в ивент фильтре для мди области если возвращаешь истину то всеравно порядок виджетов изменяется....

Сообщение отредактировал wiz29 - 29.10.2010, 15:57
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
igor_bogomolov
  опции профиля:
сообщение 29.10.2010, 16:53
Сообщение #2


Профессионал
*****

Группа: Сомодератор
Сообщений: 1215
Регистрация: 22.3.2009
Из: Саратов
Пользователь №: 630

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




Репутация:   29  


А если перед выходом вызвать void QEvent::ignore () ?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
wiz29
  опции профиля:
сообщение 1.11.2010, 9:33
Сообщение #3


Старейший участник
****

Группа: Участник
Сообщений: 600
Регистрация: 7.7.2010
Из: Санкт-Петербург
Пользователь №: 1866

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




Репутация:   12  


Цитата(igor_bogomolov @ 29.10.2010, 16:53) *
А если перед выходом вызвать void QEvent::ignore () ?

Не не помогает.

как мне кажется выбран не тот уровень для перехвата этого события, а вот какой верный пока не понятно...
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
wiz29
  опции профиля:
сообщение 1.11.2010, 10:19
Сообщение #4


Старейший участник
****

Группа: Участник
Сообщений: 600
Регистрация: 7.7.2010
Из: Санкт-Петербург
Пользователь №: 1866

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




Репутация:   12  


мде, куте как всегда имеет свою "кривизну" реализации. У QMdiArea стоит eventFilter на QApplication::instance(), в нем и обрабатываеются нажатие этих комбинаций.....
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
wiz29
  опции профиля:
сообщение 1.11.2010, 10:52
Сообщение #5


Старейший участник
****

Группа: Участник
Сообщений: 600
Регистрация: 7.7.2010
Из: Санкт-Петербург
Пользователь №: 1866

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




Репутация:   12  


решил, "убираю" фильтры ивентов для QMdiArea объекта с активного child subwindow и c QApplication::instance()...
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
igor_bogomolov
  опции профиля:
сообщение 1.11.2010, 16:19
Сообщение #6


Профессионал
*****

Группа: Сомодератор
Сообщений: 1215
Регистрация: 22.3.2009
Из: Саратов
Пользователь №: 630

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




Репутация:   29  


Цитата(wiz29)
мде, куте как всегда имеет свою "кривизну" реализации. У QMdiArea стоит eventFilter на QApplication::instance(), в нем и обрабатываеются нажатие этих комбинаций.....
На самом деле это правильно. Ведь смена mdi окон должна быть глобальной по отношению к приложению, а не вызываться только когда мы находимся в mdi area
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
wiz29
  опции профиля:
сообщение 1.11.2010, 17:34
Сообщение #7


Старейший участник
****

Группа: Участник
Сообщений: 600
Регистрация: 7.7.2010
Из: Санкт-Петербург
Пользователь №: 1866

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




Репутация:   12  


ну тогда это нужно делать на уровне окна родителя, что будет если у меня будет 2 окна с QMdiArea объектами, в обоих начнутся переключения?

просто неочевдный и недокументированный функционал, это раздражает чесное слово...
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
igor_bogomolov
  опции профиля:
сообщение 1.11.2010, 22:17
Сообщение #8


Профессионал
*****

Группа: Сомодератор
Сообщений: 1215
Регистрация: 22.3.2009
Из: Саратов
Пользователь №: 630

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




Репутация:   29  


Цитата(wiz29 @ 1.11.2010, 17:34) *
что будет если у меня будет 2 окна с QMdiArea объектами, в обоих начнутся переключения?
нет, только в одном, в том у которого mdisubwindow на данный момент активный
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

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


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




RSS Текстовая версия Сейчас: 27.12.2024, 9:41