所以我正在编写一个 qtwidget,它需要通过覆盖相应的功能来进行键盘和鼠标输入。然而,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
}