首页 前端知识 QT键盘和鼠标事件

QT键盘和鼠标事件

2024-08-10 00:08:01 前端知识 前端哥 105 606 我要收藏

这些事件都在QWidget 中的保护成员方法中

都是虚函数在头文件中声明了 需要类外重现实现

如果头文件中声明 类外无实现就会报错

void Widget::keyPressEvent(QKeyEvent *event)
{
switch (event->key()) {//获取按键
case Qt::Key_W://按键w
qDebug()<<"按下w";
break;
case Qt::Key_S:
qDebug()<<"按下S";
break;
}
qDebug()<<"按下";
}
void Widget::keyReleaseEvent(QKeyEvent *event)
{
switch (event->key()) {//获取按键
case Qt::Key_Up://获取小键盘
qDebug()<<"按下shang";
break;
case Qt::Key_Down:
qDebug()<<"按下下";
break;
case Qt::Key_Left:
qDebug()<<"按下下";
break;
case Qt::Key_Right:
qDebug()<<"按下右";
break;
}
复制

鼠标进入和离开事件 鼠标进入窗口 和离开窗口时

判断是左键还是右键

鼠标按下

event->pos    event->globalpos

位置

使用键盘事件控制图片的移动:

.h文件

#ifndef MYWIDGET_H
#define MYWIDGET_H
#include <QWidget>
#include <QPixmap>
#include <QPoint>
class MyWidget : public QWidget
{
Q_OBJECT
public:
explicit MyWidget(QWidget *parent = nullptr);
protected:
void keyPressEvent(QKeyEvent *event) override;
void paintEvent(QPaintEvent *event) override;
private:
QPixmap m_image; // 存储图片
QPoint m_position; // 图片的位置
};
#endif // MYWIDGET_H
复制

.cpp文件

#include "widget.h"
#include "ui_widget.h"
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget),
m_image("://png_icon/dog.png"),
m_position(50,50)
{
ui->setupUi(this);
setFixedSize(400,600);
}
Widget::~Widget()
{
delete ui;
}
void Widget:: keyPressEvent(QKeyEvent *event)
{
int moveStep = 10; // 移动步长
switch (event->key()) {
case Qt::Key_W:
m_position.ry() -= moveStep;
break;
case Qt::Key_S:
m_position.ry() += moveStep;
break;
case Qt::Key_A:
m_position.rx() -= moveStep;
break;
case Qt::Key_D:
m_position.rx() += moveStep;
break;
default:
QWidget::keyPressEvent(event);
return;
}
// 限制移动范围
m_position.setX(qBound(0, m_position.x(), width() - m_image.width()));
m_position.setY(qBound(0, m_position.y(), height() - m_image.height()));
update(); // 触发重绘
}
void Widget:: paintEvent(QPaintEvent *event)
{
QPainter painter(this);
painter.drawPixmap(m_position, m_image);
}
复制

转载请注明出处或者链接地址:https://www.qianduange.cn//article/15166.html
评论
还可以输入200
共0条数据,当前/页
发布的文章

安装Nodejs后,npm无法使用

2024-11-30 11:11:38

大家推荐的文章
会员中心 联系我 留言建议 回顶部
复制成功!