crossplatform.ru

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

> Переопределение функции keyPressEvent для определенного виджета
AD
  опции профиля:
сообщение 19.3.2010, 18:41
Сообщение #1


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

Группа: Участник
Сообщений: 2003
Регистрация: 4.2.2008
Из: S-Petersburg
Пользователь №: 84

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




Репутация:   17  


keyPressEvent переопределяется только для главного окна программы. А как сделать, чтобы кнопки, например, "+" и "-" соответствовали только определенному виджету в этом окне?

Сообщение отредактировал AD - 26.3.2010, 13:38
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
Litkevich Yuriy
  опции профиля:
сообщение 23.3.2010, 13:55
Сообщение #2


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

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




Репутация:   94  


Цитата(AD @ 23.3.2010, 16:33) *
фильтр событий
ключевое слово для поиска по форуму
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
AD
  опции профиля:
сообщение 23.3.2010, 16:05
Сообщение #3


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

Группа: Участник
Сообщений: 2003
Регистрация: 4.2.2008
Из: S-Petersburg
Пользователь №: 84

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




Репутация:   17  


Cделал так. Что-то не то... Не заходит при нажатии на "+"/
// Constructor
tabTopoView -> chartWidget() -> installEventFilter(this);
tabUniView -> chartWidget() -> installEventFilter(this);
tabMarineView -> chartWidget() -> installEventFilter(this);
tabLibView -> chartWidget() -> installEventFilter(this);




/// Фильтрация событий
bool T::eventFilter(QObject* object, QEvent* events)
{
    bool p1 = (object == tabTopoView -> chartWidget() || object == tabUniView -> chartWidget() ||
        object == tabMarineView -> chartWidget() || object == tabLibView -> chartWidget());

    if((object == tabTopoView -> chartWidget() || object == tabUniView -> chartWidget() ||
        object == tabMarineView -> chartWidget() || object == tabLibView -> chartWidget()) &&
        events -> type() == QEvent::KeyPress)
    {
        QKeyEvent* key_events(static_cast<QKeyEvent*> (events));
        switch(key_events -> key())
        {
        case Qt::Key_Plus:
            p1 = false;
        break;
        case Qt::Key_Minus:
        break;
        }
        return QMainWindow::eventFilter(object, events);
    }
    
    return QMainWindow::eventFilter(object, events);
}

Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
AD
  опции профиля:
сообщение 23.3.2010, 17:23
Сообщение #4


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

Группа: Участник
Сообщений: 2003
Регистрация: 4.2.2008
Из: S-Petersburg
Пользователь №: 84

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




Репутация:   17  


Пожалуйста, помогите понять, как правильно сделать.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
AD
  опции профиля:
сообщение 24.3.2010, 10:20
Сообщение #5


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

Группа: Участник
Сообщений: 2003
Регистрация: 4.2.2008
Из: S-Petersburg
Пользователь №: 84

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




Репутация:   17  


У меня не заходит внутрь условия, так как попадает в функцию только в 2 случаях: "activate Window" and "deactivate Window". Как поправить эти проблемы? Кто-нибудь сможет помочь?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме
- AD   Переопределение функции keyPressEvent для определенного виджета   19.3.2010, 18:41
- - Litkevich Yuriy   1) проверять в фокусе ли виджет 2) поставить фильт...   19.3.2010, 19:38
|- - AD   1) А какая именно функция проверяет? Не помню.... ...   22.3.2010, 18:18
|- - AD   Как поставить фильтр событий на нужный виджет?   23.3.2010, 13:33
- - Litkevich Yuriy   Цитата(AD @ 23.3.2010, 16:33) фильтр собы...   23.3.2010, 13:55
|- - AD   Cделал так. Что-то не то... Не заходит при нажатии...   23.3.2010, 16:05
|- - AD   Пожалуйста, помогите понять, как правильно сделать...   23.3.2010, 17:23
|- - AD   У меня не заходит внутрь условия, так как попадает...   24.3.2010, 10:20
- - kwisp   AD, по твоему коду вообще не понятно что ты хочеш...   24.3.2010, 11:08
|- - AD   Цитата(kwisp @ 24.3.2010, 11:08) AD, по ...   24.3.2010, 11:24
- - kwisp   Цитата(AD @ 24.3.2010, 11:24) Я хочу видж...   24.3.2010, 11:33
|- - AD   б)   24.3.2010, 11:54
- - kwisp   теперь ясно почему используешь eventFilter(). непо...   24.3.2010, 12:24
|- - AD   Цитата(kwisp @ 24.3.2010, 12:24) далее не...   24.3.2010, 12:42
- - kwisp   подозревают мешают проверки о которых я говорил. п...   24.3.2010, 12:50
|- - AD   Цитата(kwisp @ 24.3.2010, 12:50) подозрев...   24.3.2010, 13:00
- - kwisp   AD, остается фокус ввода. что дает его изменение ...   24.3.2010, 13:08
|- - AD   Цитата(kwisp @ 24.3.2010, 13:08) AD, ост...   24.3.2010, 15:38
- - kwisp   Цитата(AD @ 24.3.2010, 15:38) В виджете, ...   25.3.2010, 8:27
|- - AD   Цитата(kwisp @ 25.3.2010, 8:27) от куда т...   25.3.2010, 9:59
- - kwisp   Цитата(AD @ 25.3.2010, 9:59) Какой глобал...   25.3.2010, 10:21
|- - AD   Цитата(kwisp @ 25.3.2010, 10:21) если не ...   25.3.2010, 10:29
- - kwisp   AD, и я повторюсь. Попробуй унаследоваться от QAp...   25.3.2010, 10:37
|- - AD   А что по поводу фокуса ввода? Можно какой-нибудь м...   25.3.2010, 11:27
- - kwisp   Цитата(AD @ 25.3.2010, 11:27) А что по по...   25.3.2010, 13:26
|- - AD   Не удается такой финт ушами. Реально, нужна помощ...   25.3.2010, 15:45
|- - AD   Удалось попасть в глобальный фильтр событий, но дл...   26.3.2010, 13:36
- - kwisp   вопрос не по теме по-моему. попробуй вынести вынес...   25.3.2010, 16:06
- - AD   Цитата(kwisp @ 25.3.2010, 16:06) вопрос н...   25.3.2010, 16:43


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


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




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