Сигналы и слоты |
Здравствуйте, гость ( Вход | Регистрация )
Сигналы и слоты |
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 |
Мне нужно установить связь (а-ля connect) между своим событием и слотом. Проблема заключается в том, что я не знаю, как правильно в параметр SIGNAL передать свое событие. Мне нужно передать туда событие типа KeyPressEvent. В нем при помощи switch я определяю, какая кнопка нажата,чтобы затем выполнить нужные мне действия. Как можно это осуществить? То есть вот допустим есть операция connect(leftMonthButton, SIGNAL(clicked()), this, SLOT(decrementMonth())); Мне нужно вместо clicked() поставить свое событие, которое будет реагировать при нажатии левой стрелки. Есть как минимум два способа: 1. Можно у своего widget декларировать сигнал leftArrowClicked(), и вызывать его при обработке события keyReleaseEvent () в случае события для кнопки Qt::Qt::Key_Left. соединить сигнал
2. Можно у своего widget декларировать сигнал keyClicked( int ), и вызывать его при обработке события keyReleaseEvent (), передавая код отжатой клавиши клавиатуры. тогда нужно модифицировать еще и слот
|
|
|
Текстовая версия | Сейчас: 29.11.2024, 12:00 |