Qt系统相关

一.Qt事件

1.1 事件介绍

事件是应用程序内部或者外部产⽣的事情或者动作的统称。在 Qt 中使用⼀个对象来表示⼀个事件。所有的 Qt 事件均继承于抽象类 QEvent。事件是由系统或者 Qt 平台本⾝在不同的时刻发出的。当用户按下⿏标、敲下键盘,或者是窗⼝需要重新绘制的时候,都会发出⼀个相应的事件。⼀些事件是在用户操作时发出,如键盘事件、⿏标事件等,另⼀些事件则是由系统本⾝⾃动发出,如定时器事件。常见的 Qt 事件如下:
在这里插入图片描述

常见时间描述

事件名称 描述
⿏标事件 ⿏标左键、⿏标右键、⿏标滚轮,⿏标的移动,⿏标按键的按下和松开
键盘事件 按键类型、按键按下、按键松开
定时器事件 定时时间到达
进⼊离开事件 ⿏标的进⼊和离开
滚轮事件 ⿏标滚轮滚动
绘屏事件 重绘屏幕的某些部分
显⽰隐藏事件 窗⼝的显⽰和隐藏
移动事件 窗⼝位置的变化
窗⼝事件 是否为当前窗口
⼤⼩改变事件 窗口⼤⼩改变
焦点事件 键盘焦点移动
拖拽事件 用⿏标进⾏拖拽

1.12 事件的处理

事件处理⼀般常用的方法为:重写相关的 Event 函数

在 Qt 中,几乎所有的 Event 函数都是虚函数,所以可以重新实现。如:在实现⿏标的进⼊和离开事件时,直接重新实现 enterEvent() 和 leaveEvent() 即可。enterEvent() 和 leaveEvent() 函数原型如下:
在这里插入图片描述

1.2 按键事件

Qt 中的按键事件是通过 QKeyEvent 类来实现的。当键盘上的按键被按下或者被释放时,键盘事件便会触发。在帮助⽂档中查找QKeyEvent 类如下

在这里插入图片描述

1.2.1 单个按键

示例:当某个按键被按下时,输出:某个按键被按下了
#include "widget.h"
#include "ui_widget.h"

#include<QDebug>
#include<QKeyEvent>


Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
   
   
    ui->setupUi(this);
}

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

void Widget::keyPressEvent(QKeyEvent *event)
{
   
   
//    qDebug()<<event->key();
    if(event->key()==Qt::Key_A&&event->modifiers()==Qt::ControlModifier)
    {
   
   

        qDebug()<<"按下了ctrl+A";
    }


}


在这里插入图片描述

1.2.2 组合按键

在 Qt 助手中搜索:Qt::KeyboardModifier,如下图示:
在这里插入图片描述
Qt::KeyboardModifier 中定义了在处理键盘事件时对应的修改键。在 Qt 中,键盘事件可以与修改键⼀起使用,以实现⼀些复杂的交互操作。KeyboardModifier 中修改键的具体描述如下:

Qt::NoModifier ⽆修改键
Qt::ShiftModifier Shift 键
Qt::ControlModifier Ctrl 键
Qt::AltModifier Alt 键
Qt::MetaModifier Meta键(在Windows上指Windows键,在macOS上指Command键)
Qt::KeypadModifier 使⽤键盘上的数字键盘进⾏输⼊时,Num Lock键处于打开状态
Qt::GroupSwitchModifier ⽤于在输⼊法 组之间 切换
示例
#include "widget.h"
#include "ui_widget.h"

#include<QDebug>
#include<QKeyEvent>


Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
   
   
    ui->setupUi(this);
}

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

void Widget::keyPressEvent(QKeyEvent *event)
{
   
   
//    qDebug()<<event->key();
    if(event->key()==Qt::Key_A&&event->modifiers()==Qt::ControlModifier)
    {
   
   

        qDebug()<<"按下了ctrl+A";
    }


}


1.3鼠标事件

在 Qt 中,鼠标事件是用 QMouseEvent 类来实现的。当在窗⼝中按下鼠标或者移动⿏标时,都会产⽣⿏标事件。

在这里插入图片描述

1.3.1鼠标单击事件

在 Qt 中,⿏标按下是通过虚函数 mousePressEvent() 来捕获的。mousePressEvent() 函数原型如下:

[virtual protected] void QWidget::mousePressEvent(QMouseEvent *event)

鼠标左右键及滚轮的表示

  • Qt::LeftButton ⿏标左键
  • Qt::RightButton ⿏标右键
  • Qt::MidButton ⿏标滚轮

1.3.2 ⿏标双击事件

⿏标双击事件是通过虚函数:mouseDoubleClickEvent() 来实现的。mouseDoubleClickEvent()
函数原型如下:

[virtual protected] void QWidget::mouseDoubleClickEvent(QMouseEvent *event)

在这里插入图片描述

1.3.3 ⿏标移动事件

⿏标移动事件是通过虚函数:mouseMoveEvent() 来实现的。同时为了实时捕获⿏标位置信息,需要
通过函数 setMouseTracking() 来追踪⿏标的位置。**mouseMoveEvent()**函数原型如下:

[virtual protected] void QWidget::mouseMoveEvent(QMouseEvent *event)

**setMouseTracking()**函数原型如下:

void setMouseTracking(bool enable)

说明

setMouseTracking() 函数默认是 false,需要设置为 true,才能实时捕获⿏标位置信息。否则只有当⿏标按下时才能捕获其位置信息。

1.3.4 滚轮事件

在 Qt 中,鼠标滚轮事件是通过 QWheelEvent 类来实现的。滚轮滑动的距离可以通过 delta() 函数获取。delta() 函数原型如下:

int QGraphicsSceneWheelEvent::delta() const

其中返回值代表滚轮滑动的距离。正数表⽰滚轮相对于用户向前滑动,负数表示滚轮相对于用户向后滑动。

#include "widget.h"
#include "ui_widget.h"
#include<QDebug>
#include<QWheelEvent>

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
   
   
    ui->setupUi(this);
    total=0;
}

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

void Widget::wheelEvent(QWheelEvent *event
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值