keyPressEvent 无反应
Posted
技术标签:
【中文标题】keyPressEvent 无反应【英文标题】:keyPressEvent no reaction 【发布时间】:2014-03-04 10:24:55 【问题描述】:我正在写 QT。 OpenGL 已连接,工作正常,但是 mousePressEvent 事件和 keyPressEvent 不响应击键。
class MainWindow : public QGLWidget
Q_OBJECT
protected:
void initializeGL(); // Метод для инициализирования opengl
void resizeGL(int nWidth, int nHeight); // Метод вызываемый после каждого изменения размера окна
void paintGL(); // Метод для вывода изображения на экран
void paintSun();
void mousePressEvent(QMouseEvent *mouse);
void keyPressEvent(QKeyEvent *ke);
public:
MainWindow(int x, int y,QWidget *parent = 0);
~MainWindow();
;
void MainWindow::keyPressEvent(QKeyEvent *ke)
switch (ke->key())
case Qt::Key_Space://NO REACTION
View += 1;
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
paintPlanet();
break;
updateGL();
【问题讨论】:
您的QGLWidget
是复杂布局的一部分吗?
不,我有它是示例 qt progect
是否触发了keyPressEvent?你可以在调试器中检查它吗?
【参考方案1】:
确保 MainWindow 通过设置接受焦点
QWidget::setFocusPolicy()
您还应该调用 QWidget::keyPressEvent as stated here 的基本实现。是否有另一个 Widget 具有焦点且不通过 KeyEvent?
【讨论】:
以上是关于keyPressEvent 无反应的主要内容,如果未能解决你的问题,请参考以下文章
为啥 PyQt 中的 keyPress 事件对 Enter 键不起作用?