Qt기본_07. 기본위젯 활용해보기 (키이벤트, 키보드입력이벤트 받기)

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------  RSS 방지선  ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------





Qt기본_07. 기본위젯 활용해보기


 - 사용 : 키이벤트, 라벨


 - 실행파일

test_07_release.z01

test_07_release.zip


 - 소스파일

test_07_source.zip




1. 레이아웃 잡기

 - 라벨 하나 넣어두었다.




2. 헤더파일 수정

 - QKeyEvent 헤더파일 삽입

 - void KeyPressEvent(QKeyEvent *event) 함수 오버라이딩 선언




3. cpp 파일

 - 라인에디트 속성 설정 (가운데정렬)

 - 읽기전용이라고 적혀있는 주석은 무시하자.

 - 키입력이벤트 함수 구현

 - 입력받은 키의 이름을 화면에 보여주게 해보았다.

 - 윈도우 환경에서, 삼성키보드를 사용중인데 PrintScreenKey 를 제외한 모든 키가 이벤트에 걸리는 것을 확인하였다.

 - 스크린샷 키는 아무래도, 프로그램에 가기전에 운영체제쪽에서 가로채가는 느낌이다. 나중에 다른 예제를 진행함에 있어 좀 더 알아보도록 하겠다.





4. 결과화면





5. 키이벤트 함수 코드

 - 소스파일도 따로 올려두긴 했지만, 이번것은 보고 치기엔 좀 길거 같아서

 - 따로 소스파일을 게시하였다.

// C lang
// KeyPressEvent(QKeyEvent *event) 함수 구현
void Dialog::keyPressEvent(QKeyEvent *event)
{
    QString text;
    switch(event->key())
    {
    case Qt::Key_Space: text = "Key_Space"; break;
    case Qt::Key_Exclam: text = "Key_Exclam"; break;
    case Qt::Key_QuoteDbl: text = "Key_QuoteDbl"; break;
    case Qt::Key_NumberSign: text = "Key_NumberSign"; break;
    case Qt::Key_Dollar: text = "Key_Dollar"; break;
    case Qt::Key_Percent: text = "Key_Percent"; break;
    case Qt::Key_Ampersand: text = "Key_Ampersand"; break;
    case Qt::Key_Apostrophe: text = "Key_Apostrophe"; break;
    case Qt::Key_ParenLeft: text = "Key_ParenLeft"; break;
    case Qt::Key_ParenRight: text = "Key_ParenRight"; break;
    case Qt::Key_Asterisk: text = "Key_Asterisk"; break;
    case Qt::Key_Plus: text = "Key_Plus"; break;
    case Qt::Key_Comma: text = "Key_Comma"; break;
    case Qt::Key_Minus: text = "Key_Minus"; break;
    case Qt::Key_Period: text = "Key_Period"; break;
    case Qt::Key_Slash: text = "Key_Slash"; break;
    case Qt::Key_At: text = "Key_At"; break;
    case Qt::Key_0: text = "Key_0"; break;
    case Qt::Key_1: text = "Key_1"; break;
    case Qt::Key_2: text = "Key_2"; break;
    case Qt::Key_3: text = "Key_3"; break;
    case Qt::Key_4: text = "Key_4"; break;
    case Qt::Key_5: text = "Key_5"; break;
    case Qt::Key_6: text = "Key_6"; break;
    case Qt::Key_7: text = "Key_7"; break;
    case Qt::Key_8: text = "Key_8"; break;
    case Qt::Key_9: text = "Key_9"; break;
    case Qt::Key_Colon: text = "Key_Colon"; break;
    case Qt::Key_Semicolon: text = "Key_Semicolon"; break;
    case Qt::Key_Less: text = "Key_Less"; break;
    case Qt::Key_Equal: text = "Key_Equal"; break;
    case Qt::Key_Greater: text = "Key_Greater"; break;
    case Qt::Key_Question: text = "Key_Question"; break;
    case Qt::Key_A: text = "Key_A"; break;
    case Qt::Key_B: text = "Key_B"; break;
    case Qt::Key_C: text = "Key_C"; break;
    case Qt::Key_D: text = "Key_D"; break;
    case Qt::Key_E: text = "Key_E"; break;
    case Qt::Key_F: text = "Key_F"; break;
    case Qt::Key_G: text = "Key_G"; break;
    case Qt::Key_H: text = "Key_H"; break;
    case Qt::Key_I: text = "Key_I"; break;
    case Qt::Key_J: text = "Key_J"; break;
    case Qt::Key_K: text = "Key_K"; break;
    case Qt::Key_L: text = "Key_L"; break;
    case Qt::Key_M: text = "Key_M"; break;
    case Qt::Key_N: text = "Key_N"; break;
    case Qt::Key_O: text = "Key_O"; break;
    case Qt::Key_P: text = "Key_P"; break;
    case Qt::Key_Q: text = "Key_Q"; break;
    case Qt::Key_R: text = "Key_R"; break;
    case Qt::Key_S: text = "Key_S"; break;
    case Qt::Key_T: text = "Key_T"; break;
    case Qt::Key_U: text = "Key_U"; break;
    case Qt::Key_V: text = "Key_V"; break;
    case Qt::Key_W: text = "Key_W"; break;
    case Qt::Key_X: text = "Key_X"; break;
    case Qt::Key_Y: text = "Key_Y"; break;
    case Qt::Key_Z: text = "Key_Z"; break;
    case Qt::Key_BracketLeft: text = "Key_BracketLeft"; break;
    case Qt::Key_Backslash: text = "Key_Backslash"; break;
    case Qt::Key_BracketRight: text = "Key_BracketRight"; break;
    case Qt::Key_AsciiCircum: text = "Key_AsciiCircum"; break;
    case Qt::Key_Underscore: text = "Key_Underscore"; break;
    case Qt::Key_QuoteLeft: text = "Key_QuoteLeft"; break;
    case Qt::Key_BraceLeft: text = "Key_BraceLeft"; break;
    case Qt::Key_Bar: text = "Key_Bar"; break;
    case Qt::Key_BraceRight: text = "Key_BraceRight"; break;
    case Qt::Key_AsciiTilde: text = "Key_AsciiTilde"; break;
    case Qt::Key_Up: text = "Key_Up"; break;
    case Qt::Key_Down: text = "Key_Down"; break;
    case Qt::Key_Left: text = "Key_Left"; break;
    case Qt::Key_Right: text = "Key_Right"; break;
    case Qt::Key_Escape: text = "Key_Escape"; break;
    case Qt::Key_F1: text = "Key_F1"; break;
    case Qt::Key_F2: text = "Key_F2"; break;
    case Qt::Key_F3: text = "Key_F3"; break;
    case Qt::Key_F4: text = "Key_F4"; break;
    case Qt::Key_F5: text = "Key_F5"; break;
    case Qt::Key_F6: text = "Key_F6"; break;
    case Qt::Key_F7: text = "Key_F7"; break;
    case Qt::Key_F8: text = "Key_F8"; break;
    case Qt::Key_F9: text = "Key_F9"; break;
    case Qt::Key_F10: text = "Key_F10"; break;
    case Qt::Key_F11: text = "Key_F11"; break;
    case Qt::Key_F12: text = "Key_F12"; break;
    case Qt::Key_Backspace: text = "Key_Backspace"; break;
    case Qt::Key_Tab: text ="Key_Tab"; break;
    case Qt::Key_CapsLock: text ="Key_CapsLock"; break;
    case Qt::Key_Shift: text ="Key_Shift"; break;
    case Qt::Key_Alt: text ="Key_Alt"; break;
    case Qt::Key_Control: text ="Key_Control"; break;
    case Qt::Key_Print: text ="Key_Print"; break;
    case Qt::Key_ScrollLock: text ="Key_ScrollLock"; break;
    case Qt::Key_Pause: text ="Key_Pause"; break;
    case Qt::Key_Insert: text ="Key_Insert"; break;
    case Qt::Key_Delete: text ="Key_Delete"; break;
    case Qt::Key_Home: text ="Key_Home"; break;
    case Qt::Key_End: text ="Key_End"; break;
    case Qt::Key_PageUp: text ="Key_PageUp"; break;
    case Qt::Key_PageDown: text ="Key_PageDown"; break;
    case Qt::Key_Enter: text ="Key_Enter"; break;
    case Qt::Key_NumLock: text = "Key_NumLock"; break;
    case Qt::Key_Clear: text = "Key_Clear"; break;
    case Qt::Key_Return: text = "Key_Return"; break;
    case Qt::Key_Meta: text = "Key_Meta"; break;
    case Qt::Key_Menu: text = "Key_Menu"; break;

    default: text = QString::number(event->key());
    }
    ui->label->setText(text);
    //qDebug() << QString::number(event->key());
}


댓글

Designed by JB FACTORY