Показать полную графическую версию : Как сделать соответствие кнопки и клавиши
Как сделать чтобы при нажатии на Ctrl+O и нажатии на кнопку "Открыть" происходило одно и тоже?
hasherfrog
22-04-2004, 11:40
Назначить кнопке "Открыть" акселератор Ctrl+O?
hasherfrog
Да!
Но именно не в MainMenu, а на обычню Button?
hasherfrog
22-04-2004, 14:44
Ну в Qt будет просто void QButton::setAccel ( const QKeySequence & ). Кстати по умолчанию многие контролсы (в том числе и кнопки) устанавляваю себе акселератор исходя из своего текста. Если в тексте есть значёчек &, то следующая буква станет "горячей" кнопкой. Если это не устраивает (например Ctrl+O для русского "&Открыть не сработает), воспользуйтесь ::setAccel.
Если пишешь на 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 кнопки,
всё сработает как надо.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.