当前位置:网站首页>QT之鼠标和键盘事件重写
QT之鼠标和键盘事件重写
2022-08-03 02:29:00 【天天进步一点点】
有时候我们需要重写键盘和鼠标的事件的处理函数,那么这个时候我们就需要进行事件编程
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QMouseEvent>
#include <QWheelEvent>
#include <QKeyEvent>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = nullptr);
~MainWindow();
protected:
//我们来重写QT的5个标准的鼠标事件函数,从而实现我们自己想要的动作
void mouseDoubleClickEvent(QMouseEvent *event);//鼠标双击事件
void mouseMoveEvent(QMouseEvent *event);//数据表移动事件
void mousePressEvent(QMouseEvent *event);//鼠标按下事件
void mouseReleaseEvent(QMouseEvent *event);//鼠标松开事件
void wheelEvent(QWheelEvent *event); //鼠标滚轮事件
void keyPressEvent(QKeyEvent *event);//键盘事件
private:
Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
setMouseTracking(true);
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::mouseDoubleClickEvent(QMouseEvent *event)
{
if(event->button() == Qt::LeftButton){
ui->label->setText("left button dbclicked");
}
else {
ui->label->setText("right button dbclicked");
}
}
void MainWindow::mouseMoveEvent(QMouseEvent *event)
{
QPoint pos = event->globalPos();
ui->label_2->setText(QString("(%1,%2)").arg(pos.rx()).arg(pos.ry()));
}
void MainWindow::mousePressEvent(QMouseEvent *event)
{
if(event->button() == Qt::LeftButton){
ui->label->setText("left button pressed");
}
else {
ui->label->setText("right button pressed");
}
}
void MainWindow::mouseReleaseEvent(QMouseEvent *event)
{
if(event->button() == Qt::LeftButton){
ui->label->setText("left button released");
}
else {
ui->label->setText("right button released");
}
}
void MainWindow::wheelEvent(QWheelEvent *event)
{
if(event->delta() > 0){
ui->label_2->setText("wheel up");
}
else {
ui->label_2->setText("wheel down");
}
}
void MainWindow::keyPressEvent(QKeyEvent *event)
{
if(event->key() == Qt::Key_0)//键盘0按下
{
ui->label_2->setText("key 0 pressed");
}
if(event->key() == Qt::Key_1)
{
ui->label_2->setText("key 1 pressed");
}
}
我们来看一下运行效果

边栏推荐
- pytorch 中 permute()函数的用法
- [@property enhancement in Objective-C language]
- 2022-08-02 顾宇佳 学习笔记 多线程
- Rust Web(三)—— 通过sqlx连接数据库(MySQL)
- Wei Dongshan Digital Photo Frame Project Learning (5) Transplantation of libjpeg-turbo
- leetcode:162. 寻找峰值
- 5.软件测试-----自动化测试
- 我终于逃离了互联网,却陷入了迷茫
- 梅科尔工作室-14天华为培训三
- C语言——-动态内存开辟与管理(malloc,free,calloc,realloc)+柔性数组
猜你喜欢
随机推荐
DTD约束和Schema约束
机器学习【KNN案例、API、总结】
企业上云规划与云原生环境设计
rancher集成ldap,实现统一账号登录
一些面试的总结
禁用token及无感知更新token功能实现
Incorrect datetime value: ‘2022-01-01‘ for function str_to_date
win下使用vscode+wsl2
什么是数据标注? 数据标注公司主要做什么?
monkey 压测
15【背景 渐变色】
ldap创建公司组织、人员
zyMedia系列之播放视频
kubernetes部署ldap
问题记录:jenkins构建时报错The goal you specified requires a project to execute but there is no POM in...
Redshift贴logo的方法
【云原生】服务行业案例-不可预测的并发场景解决方案
【GO记录】从零开始GO语言——用GO语言做一个示波器(二)基于arduino的简易示波器
南瓜科学新品上线 开辟益智玩具新世界
【数据分析】基于MATLAB实现SVDD决策边界可视化









