在新类中重新定义了keyPressEvent(QKeyEvent *event)函数,但是程序运行中keyPressEvent函数并没有响应键盘事件
void GLWidget::keyPressEvent(QKeyEvent* event)
{
switch (event->key()) {
case Qt::Key_C:
if(KeyBoardCameraData==true)
KeyBoardCameraData=false;
else
KeyBoardCameraData=true;
break;
default:
break;
}
}
需要在新类的构造函数中添加
setFocusPolicy(Qt::ClickFocus);
例子:
GLWidget::GLWidget(QWidget *parent) : QGLWidget(parent)
{
xRot = 0;
yRot = 0;
zRot = 0;
zoom = 0;
setFocusPolicy(Qt::ClickFocus);
// Setup the timer (Main Loop)
timer = new QTimer(this);
timer->setInterval(10);
connect(timer, SIGNAL(timeout()), this, SLOT(loop()));
timer->stop();
}