2012-12-03 2 views
1

Possible Duplicate:
Qt 4.7.4: Is there a way to find out the status of CAPS LOCK?qt에서 capslock 상태를 감지하는 방법은 무엇입니까?

mac os x에서 qt의 capslock 키 상태를 감지하는 방법. 나는 시도했다

디스플레이 * d = XOpenDisplay ((char *) 0);

bool caps_state = false; 
if (d) 
{ 
    unsigned n; 
    XkbGetIndicatorState(d, XkbUseCoreKbd, &n); 
    caps_state = (n & 0x01) == 1; 
} 
return caps_state; 

그러나 그것은 나에게 다음과 같은 오류 제공 :

"_XOpenDisplay"에서 참조 :

myclass::keyEvent(QKeyEvent*)  
MyClass에 :: GetCapslockState() 된 .o 아키텍처 x86_64에 대한

정의되지 않은 문자

"_XkbGetIndicatorState", 참조 된 위치 : .o

myclass::GetCapslockState()  in .o 
    myclass::keyEvent(QKeyEvent*)  in .o 

LD : 기호가 건축 x86_64의 collect2 찾을 수 없습니다 : 신분증 1 종료 상태

내가 QT으로 개발되어 새로운 오전를 반환했습니다. 왜 내가이 오류를 보여주고 있는지 모르겠다. 나는 "#include"헤더 파일을 포함 시켰습니다. 누구든지 나를 도와주세요.

+0

이 다른 질문을보십시오. http://stackoverflow.com/questions/9830905/qt-4-7-4-is-there-a-way-to-find-out-the-status-of-caps -lock – Spidey

+0

OS X에서 X11 기호를 사용하고 있습니다. X11을 사용하면 일반적으로 OS X가 좋지 않습니다 (기본적으로 설치되지 않은 사용자 환경). 또한 Qt는 기본적으로 여기에 필요한 X 라이브러리와 링크하지 않습니다. –

답변

0

당신과 키에 변화를 감지 할 수 있습니다

QWidget::keyPressEvent() 
// and 
QWidget::keyReleaseEvent() 

이들은 당신이 캡의 상태를 알고있는 경우 프로그램 초기화에 고정하거나 가정 또는 경우를 요구처럼, 어떤 상황에서 상태를 확인하는 데 사용할 수 있습니다 특정 상태. 그러나 현재의 대문자 잠금 상태를 철저히 조사하기 위해 내가 아는 플랫폼 독립적 인 방법은 없습니다. 플랫폼에 의존하는 방법을 사용해야합니다. 캡 잠금 상태가 존재하지 않거나 감지 할 수없는 경우를 지원하십시오.

+0

좋아요. 찰스 감사합니다. 시도해 보겠습니다. –

관련 문제