Войти

Показать полную графическую версию : Как сделать соответствие кнопки и клавиши


fossil
22-04-2004, 10:58
Как сделать чтобы при нажатии на Ctrl+O и нажатии на кнопку "Открыть" происходило одно и тоже?

hasherfrog
22-04-2004, 11:40
Назначить кнопке "Открыть" акселератор Ctrl+O?

fossil
22-04-2004, 14:16
hasherfrog
Да!
Но именно не в MainMenu, а на обычню Button?

hasherfrog
22-04-2004, 14:44
Ну в Qt будет просто void QButton::setAccel ( const QKeySequence & ). Кстати по умолчанию многие контролсы (в том числе и кнопки) устанавляваю себе акселератор исходя из своего текста. Если в тексте есть значёчек &, то следующая буква станет "горячей" кнопкой. Если это не устраивает (например Ctrl+O для русского "&Открыть не сработает), воспользуйтесь ::setAccel.

pva
29-04-2004, 14:29
Если пишешь на C++Builder, проще сделать Action.
Если на API, то присвой кнопке ID акселератора или наоборот.
Например: id=0x101
wndproc(hwnd, umsg, wparam, lparam)
switch(umsg) {
 case 0x00000101 :
   do_the_close_action(...);
   break;
}

Когда прийдёт событие
umsg=WM_COMMAND;
wparam=0x00000101;
lparam=0 или HWND кнопки,
всё сработает как надо.

fossil
29-04-2004, 16:00
Ок, спасибо !




© OSzone.net 2001-2012