crossplatform.ru

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

3 страниц V   1 2 3 >  
Ответить в данную темуНачать новую тему
> Переопределение функции 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
  опции профиля:
сообщение 19.3.2010, 19:38
Сообщение #2


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

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

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




Репутация:   94  


1) проверять в фокусе ли виджет
2) поставить фильтр событий на нужный виджет
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
AD
  опции профиля:
сообщение 22.3.2010, 18:18
Сообщение #3


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

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

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




Репутация:   17  


1) А какая именно функция проверяет? Не помню....
2) А как именно? Прости... Не помню...
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
AD
  опции профиля:
сообщение 23.3.2010, 13:33
Сообщение #4


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

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

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




Репутация:   17  


Как поставить фильтр событий на нужный виджет?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 23.3.2010, 13:55
Сообщение #5


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

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

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




Репутация:   94  


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


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

Группа: Участник
Сообщений: 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
Сообщение #7


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

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

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




Репутация:   17  


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


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

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

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




Репутация:   17  


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


астарожна ынтжинэр
*****

Группа: Участник
Сообщений: 1404
Регистрация: 26.11.2008
Из: ТаганрогРодинаЧехова
Пользователь №: 435

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




Репутация:   23  


AD,
по твоему коду вообще не понятно что ты хочешь сделать.
что значит "не заходит" ?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
AD
  опции профиля:
сообщение 24.3.2010, 11:24
Сообщение #10


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

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

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




Репутация:   17  


Цитата(kwisp @ 24.3.2010, 11:08) *
AD,
по твоему коду вообще не понятно что ты хочешь сделать.
что значит "не заходит" ?

Я хочу виджету, в котором находится карта, переопределить функцию keyPressEvent, чтобы при нажатии на +/- масштаб менялся, а при нажатии на стрелки - происходило передвижение по карте.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

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


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




RSS Текстовая версия Сейчас: 26.2.2020, 6:33