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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: [РЕШЕНО] Преобразование кода клавиши в текст  (Прочитано 2717 раз)
ecspertiza
Супер
******
Offline Offline

Сообщений: 1053


С уважением, мастер конфетного цеха!


Просмотр профиля
« : Май 02, 2012, 18:48 »

Собственно вопрос как ? Улыбающийся Проверка вроде

Код:
if (key == Qt::Key_1)
    return "1";

катит только под виндой, под маком не работает, точнее работает ,но только если "1" нажали без шифта, ибо если нажать с шифтом приходит уже другой код клавиши. Тема вроде QKeyEvent::text() возвращает верный текст вроде такого:

Жмем "6" получаем "6"
Жмем Шифт + "6" получаем "^"

А нужно влюбом случае получить "6". Как это можно сделать ?

проверки типа

Код:
if (key & Qt::Key_1)
    return "1";


тож не работают, ибо если проверять много клавишь, та что будет проверяться первой та и вернется. Как быть ? что пропустил ?
« Последнее редактирование: Май 02, 2012, 20:39 от ecspertiza » Записан
V1KT0P
Гость
« Ответ #1 : Май 02, 2012, 19:37 »

тож не работают, ибо если проверять много клавишь, та что будет проверяться первой та и вернется. Как быть ? что пропустил ?
Смотри в сторону функций: "nativeScanCode" и "nativeVirtualKey". Но они могут быть не кроссплатформеннымы. По крайней мере "nativeScanCode" не работает в MacOS.
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #2 : Май 02, 2012, 19:58 »

Коды маковской клавы есть в Events.h. Сравните с тем что возвращает nativeVirtualKey
Записан
ecspertiza
Супер
******
Offline Offline

Сообщений: 1053


С уважением, мастер конфетного цеха!


Просмотр профиля
« Ответ #3 : Май 02, 2012, 20:38 »

Спасибо, помогли оба совета  Улыбающийся в итоге сделал так

Код:
        switch(key) {
            case kVK_F1 : return "F1";
            case kVK_F2 : return "F2";
            case kVK_F3 : return "F3";
            case kVK_F4 : return "F4";
            case kVK_F5 : return "F5";
            case kVK_F6 : return "F6";
            case kVK_F7 : return "F7";
            case kVK_F8 : return "F8";
            case kVK_F9 : return "F9";
            case kVK_F10 : return "F10";
            case kVK_F11 : return "F11";
            case kVK_F12 : return "F12";
            case kVK_ANSI_0 : return "0";
            case kVK_ANSI_1: return "1";
            case kVK_ANSI_2 : return "2";
            case kVK_ANSI_3 : return "3";
            case kVK_ANSI_4 : return "4";
            case kVK_ANSI_5 : return "5";
            case kVK_ANSI_6 : return "6";
            case kVK_ANSI_7 : return "7";
            case kVK_ANSI_8 : return "8";
            case kVK_ANSI_9 : return "9";
            case kVK_ANSI_A : return "A";
            case kVK_ANSI_B : return "B";
            case kVK_ANSI_C : return "C";
            case kVK_ANSI_D : return "D";
            case kVK_ANSI_E : return "E";
            case kVK_ANSI_F : return "F";
            case kVK_ANSI_G : return "G";
            case kVK_ANSI_H : return "H";
            case kVK_ANSI_I : return "I";
            case kVK_ANSI_J : return "J";
            case kVK_ANSI_K : return "K";
            case kVK_ANSI_L : return "L";
            case kVK_ANSI_M : return "M";
            case kVK_ANSI_N : return "N";
            case kVK_ANSI_O : return "O";
            case kVK_ANSI_P : return "P";
            case kVK_ANSI_Q : return "Q";
            case kVK_ANSI_R : return "R";
            case kVK_ANSI_S : return "S";
            case kVK_ANSI_T : return "T";
            case kVK_ANSI_U : return "U";
            case kVK_ANSI_V : return "V";
            case kVK_ANSI_W : return "W";
            case kVK_ANSI_X : return "X";
            case kVK_ANSI_Y : return "Y";
            case kVK_ANSI_Z : return "Z";
            default:
                return "";
        }

где key - nativeVirtualKey()
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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