키가 Linux에서 실제로 해제 될 때까지 keyPress 이벤트가 실행되지 않습니다. 이 동작은 Vista마다 다릅니다. 여기 내 응용 프로그램의 코드가 있습니다. 1) CTRL 키를 아래로, 2) 잠시 3)를 해제 동안 유지 : 나는 다음과 같은 순서를 수행 할 때qt keyPress/keyRelease는 Vista 및 Linux에서 다르게 작업을 알립니다.
차이가 발생합니다.
Linux의 경우 release.i.e까지 아무 것도 출력되지 않습니다. 3)까지 아무 것도 보지 않을 것입니다. 그리고 나서 "notify :: KeyPressed"와 "notify :: KeyReleased"를 보게 될 것입니다.
Vista에서 1) 이후에 "notify :: KeyPressed"가 표시되면 2)에서 QApplication :: keyboardModifier()로 CTRL이 다운되었음을 감지 할 수 있습니다. testFlag (Qt :: ControlModifier) . 3) 이후에는 "notify :: KeyReleased"가 표시됩니다.
나는 비스타에서 무슨 일이 일어날 것이라고 생각합니다. 리눅스에서이 문제를 어떻게 해결할 수 있습니까?
도움 주셔서 감사합니다.
MyApplication::QApplication
{
bool notify(Object * receiver, QEvent * event) {
try{
if (event->type() == QEvent::KeyPress) {
std::cout<<"notify::KeyPressed"<<endl;
}
if (event->type() == QEvent::KeyRelease) {
std::cout<<"notify::KeyReleased"<<endl;
}
return QApplication::notify(receiver, event);
}
catch (...) {
std::cerr << "Unknown Exception caught: " << ends;
}
return false;
}
}
어떤 창 관리자와 어떤 Qt 버전을 사용하고 있습니까? –
Qt 4.8.3을 사용하고 있습니다. RHEL Linux 5에서. – user1073719
그리고 어떤 창 관리자/데스크탑 환경? –