11/16 QT作业

 头文件

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include <QMouseEvent>//鼠标处理事件
#include <QKeyEvent>//键盘处理事件
#include <QDebug>

QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE

class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = nullptr);
    ~Widget();

    void keyPressEvent(QKeyEvent *event);//重写键盘按下处理函数
    void keyReleaseEvent(QKeyEvent *event);//重写键盘抬起事件处理函数

    void mousePressEvent(QMouseEvent *event);//重写鼠标按下处理函数
    void mouseReleaseEvent(QMouseEvent *event);//重写鼠标抬起事件处理函数
    void mouseDoubleClickEvent(QMouseEvent *event);//重写鼠标双击事件处理函数
    void mouseMoveEvent(QMouseEvent *event);//重写鼠标移动处理函数

private:
    Ui::Widget *ui;
};
#endif // WIDGET_H

源文件

#include "widget.h"
#include "ui_widget.h"

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
    setMouseTracking(true);//设置不用按住也可以触发
}

Widget::~Widget()
{
    delete ui;
}

//键盘按下处理事件函数的定义
void Widget::keyPressEvent(QKeyEvent *event)
{
    QString msg;
    msg = event->text()+ "被按下 ascii--->"+ QString::number(event->key());
                //a被按下    ascii---> 97
    ui->keyPressLab->setText(msg);//将信息展示到标签中
}

//键盘抬起处理事件函数的定义
void Widget::keyReleaseEvent(QKeyEvent *event)
{
    QString msg;
    msg = event->text()+ "被抬起 ascii--->"+ QString::number(event->key());
    ui->keyReleaseLab2->setText(msg);
}

//鼠标按下处理事件函数的定义
void Widget::mousePressEvent(QMouseEvent *event)
{
    //按下:buttons
    if(event->buttons()==Qt::LeftButton)
    {
        //左键被按下
        ui->mousePressLab->setText("鼠标左键被按下");
    }else if(event->buttons()==Qt::RightButton)
    {
        ui->mousePressLab->setText("鼠标右键被按下");
    }else if(event->buttons()==Qt::MidButton)
    {
        ui->mousePressLab->setText("鼠标中键被按下");
    }
}
//鼠标抬起处理事件函数的定义
void Widget::mouseReleaseEvent(QMouseEvent *event)
{
    //抬起:button
    if(event->button()==Qt::LeftButton)
    {
        //左键被抬起
        ui->mouseReleaseLab2->setText("鼠标左键被抬起");
    }else if(event->button()==Qt::RightButton)
    {
        ui->mouseReleaseLab2->setText("鼠标右键被抬起");
    }else if(event->button()==Qt::MidButton)
    {
        ui->mouseReleaseLab2->setText("鼠标中键被抬起");
    }
}
//鼠标双击处理事件函数的定义
void Widget::mouseDoubleClickEvent(QMouseEvent *event)
{
    if(event->button()==Qt::LeftButton)
    {
        ui->mouseDouble->setText("鼠标左键双击");
    }else if(event->button()==Qt::RightButton)
    {
        ui->mouseDouble->setText("鼠标右键双击");
    }else if(event->button()==Qt::MidButton)
    {
        ui->mouseDouble->setText("鼠标中键双击");
    }
}

void Widget::mouseMoveEvent(QMouseEvent *event)
{
    QString msg,msg2;
    msg = QString::number(event->x());//x轴坐标
    msg2 = QString::number(event->y());//y轴坐标
    QString msg3 = "x="+msg+"  y="+msg2;
    ui->mouseMoveLab4->setText(msg3);

    //qDebug()<<msg3;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值