crossplatform.ru

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

 
Ответить в данную темуНачать новую тему
> Сигналы и слоты
RaiaN
  опции профиля:
сообщение 18.7.2012, 6:36
Сообщение #1


Новичок


Группа: Новичок
Сообщений: 2
Регистрация: 18.7.2012
Пользователь №: 3453

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




Репутация:   0  


Спасибо за то, что зашли в эту тему.
У меня возникла проблема следующего рода:
Мне нужно установить связь (а-ля connect) между своим событием и слотом. Проблема заключается в том, что я не знаю, как правильно в параметр SIGNAL передать свое событие. Мне нужно передать туда событие типа KeyPressEvent. В нем при помощи switch я определяю, какая кнопка нажата,чтобы затем выполнить нужные мне действия.
Как можно это осуществить?


То есть вот допустим есть операция

connect(leftMonthButton, SIGNAL(clicked()), this, SLOT(decrementMonth()));

Мне нужно вместо clicked() поставить свое событие, которое будет реагировать при нажатии левой стрелки.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ssoft
  опции профиля:
сообщение 18.7.2012, 7:46
Сообщение #2


Участник
**

Группа: Участник
Сообщений: 130
Регистрация: 17.2.2010
Из: Москва
Пользователь №: 1470

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




Репутация:   3  


Цитата(RaiaN @ 18.7.2012, 7:36) *
Мне нужно установить связь (а-ля connect) между своим событием и слотом. Проблема заключается в том, что я не знаю, как правильно в параметр SIGNAL передать свое событие. Мне нужно передать туда событие типа KeyPressEvent. В нем при помощи switch я определяю, какая кнопка нажата,чтобы затем выполнить нужные мне действия.
Как можно это осуществить?

То есть вот допустим есть операция

connect(leftMonthButton, SIGNAL(clicked()), this, SLOT(decrementMonth()));

Мне нужно вместо clicked() поставить свое событие, которое будет реагировать при нажатии левой стрелки.


Есть как минимум два способа:

1. Можно у своего widget декларировать сигнал leftArrowClicked(), и вызывать его при обработке события keyReleaseEvent () в случае события для кнопки Qt::Qt::Key_Left.

соединить сигнал

connect(widget, SIGNAL(leftArrowClicked()), this, SLOT(decrementMonth()));


2. Можно у своего widget декларировать сигнал keyClicked( int ), и вызывать его при обработке события keyReleaseEvent (), передавая код отжатой клавиши клавиатуры.

тогда нужно модифицировать еще и слот

connect(widget, SIGNAL(keyClicked(int)), this, SLOT(onKeyClicked( int )));



Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

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


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




RSS Текстовая версия Сейчас: 22.11.2024, 7:59