声明:
void keyPressEvent2(QKeyEvent *);
实现:
void MainWindow::keyPressEvent2(QKeyEvent *e)
{
int x = ui->pushButton->x();
int y = ui->pushButton->y();
switch (e->key())
{
case Qt::Key_W : ui->pushButton->move(x, y-10); break;
case Qt::Key_S : ui->pushButton->move(x, y+10); break;
case Qt::Key_A : ui->pushButton->move(x-10, y); break;
case Qt::Key_D : ui->pushButton->move(x+10, y); break;
}
}
添加了键盘事件“keyPressEvent之后,如果使用Refactor重命名了键盘事件,就会把库文件中的keyPressEvent一起修改,造成编译报错。及时新建一个项目,也会报错。谨慎使用Refactor,绝不要在QTCreator中重命名库函数或事件。
D:\Qt\Qt5.9.9\5.9.9\mingw53_32\include\QtWidgets\qabstractscrollarea.h:132: error: 'void QAbstractScrollArea::keyPressEvent(QKeyEvent*)' marked 'override', but does not override
void keyPressEvent(QKeyEvent *) Q_DECL_OVERRIDE;