所以我正在编写一个qtwidget,它需要通过覆盖各自的功能来输入键盘和鼠标。然而,在发生鼠标按压事件之前,按键事件才会发生。我已经玩了一些焦点,这似乎没有帮助。我觉得我错过了关于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
}
答案 0 :(得分:0)
好的,所以我几天前修好了。解决方案是覆盖QWidget :: event(Event * event) 并在函数本身中执行所有事件处理