2013-07-23 4 views
1

그래서 각 함수를 재정 의하여 키보드 및 마우스 입력이 필요한 qtwidget을 작성하고 있습니다. 그러나 keypress 이벤트는 mousepress 이벤트가 발생할 때까지 발생하지 않습니다. 나는 초점으로 조금 놀았지만 그게 도움이되지 않는 것 같습니다. qt가 이벤트를 처리하는 방법과 관련하여 뭔가 빠져있는 것처럼 느껴집니다. 여러분 중 누구라도 나를 채울 수 있습니까? 감사합니다.KeyPress 이벤트 MousePress 이벤트 qt를 기다립니다

여기 제가 관련 코드 비트라고 생각합니다. 더 필요하면 알려주세요

MeshTest::MeshTest(QWidget *parent) : 
    QGLWidget(parent) 
{ 
setFocusPolicy(Qt::StrongFocus); 
/* Other stuff */ 

} 
void MeshTest::mousePressEvent(QMouseEvent *event) 
{ 
    if (event->button() == Qt::LeftButton) { 

    /* Some math/ray casting here */ 
    hasHit = MeshTest::findIntersections(x,y,z,dirx,diry,dirz); 


    } 
} 
void MeshTest::mouseReleaseEvent(QMouseEvent *event){ 
    if (event->button() == Qt::LeftButton) { 
     /* Some ray casting stuff here */ 
    } 

    if(hasHit) 
    updateGL(); 
} 

void MeshTest::keyPressEvent(QKeyEvent* event){ 
    printf("Key Pressed\n"); //Just for debugging this particular bug 
} 
+1

어떤 코드를 게시 할 수 있습니까? MainWindow 클래스와 같은 사운드 (만약 당신이 ..?)를 가지고 있다면 포커스를 가지고 있기 때문에 마우스 이벤트 후에 위젯이 그들을 가져가는 이유와 키 이벤트를 가져옵니다. 위젯에 대해 setFocusPolicy (Qt :: StrongPolicy)를 시도해 볼 수 있습니다. –

+0

오른쪽 위젯의 생성자에 해당 행을 추가했지만 문제를 해결하지 못했습니다. – user1415372

+0

NoFocus를 기본 창에 추가했지만 여전히 동일한 문제가 발생했습니다 – user1415372

답변

0

좋아요, 며칠 전이 문제를 해결했습니다. 해결 방법은 QWidget :: event (QEvent * 이벤트) 을 오버라이드하고 함수 자체에서 모든 이벤트 처리를 수행하는 것입니다.