Russian Qt Forum
Сентябрь 30, 2024, 14:41 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Как эмитировать нажатие кнопки Alt, нажав другую клавишу?  (Прочитано 3865 раз)
violator82
Гость
« : Апрель 11, 2007, 19:50 »

Нaрод помогите пожалуйста!!!
Нужно по нажатию какой-нибудь кнопки клавиатуры вызвать меню  программы, короче надо эмитировать нажатие кнопки Alt (которая вызывает меню). Или вообще перенести действие кнопки Alt на какую нибудь другую кнопку. Можно ли как нибудь это сделать???
Записан
Kosh
Гость
« Ответ #1 : Апрель 12, 2007, 11:06 »

Может, отловить событие нажатия твоей клавиши и создать событие от клавиатуры с кодом Alt, или сразу вызывать меню? Отлавливать придется, наверное , в QApplication. Читай ассистента про QApplication, там много простора для извращений всяких.
Записан
violator82
Гость
« Ответ #2 : Апрель 12, 2007, 18:52 »

Цитата: "Kosh"
Может, отловить событие нажатия твоей клавиши и создать событие от клавиатуры с кодом Alt

Да я это и пытаюсь сделать.
Переописал keyPressEvent и отловил например нажатие кнопки A, а как дальше правильно послать  событие кнопки Alt ?, я как только не пробывал менюшка не вызывается.

Цитата: "Kosh"
или сразу вызывать меню?

А что это можно сделать сразу???
Записан
Kosh
Гость
« Ответ #3 : Апрель 16, 2007, 17:11 »

в обработчике события создаёшь событие  и делаешь вызов
Код:

QKeyEvent myEvent(...) ; //(см. Ассистента)
QApplication::sendEvent( Object_u_kotorogo_menu, &myEvent);

В параметрах события обрати внимание на state, возможно, в там надо указать Qt::AltButton. Я точно не знаю, надо просто поиграть с параметрами.
А что за меню такое у тебя вызывается по одному только Alt? Может все-таки Alt+[буква]? Тогда надо
Код:

QKeyEvent myEvent(QEvent::KeyPress, код_буквы, ascii_буквы, Qt::AltButton);


добавлено спустя 13 минут:

 А сразу можно , например, в обработчике создать и вызвать QPopupMenu, или если тебе доступен указатель на нужное меню, вызвать myMenu->exec().
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.066 секунд. Запросов: 20.