目录
引言:
QT程序是事件驱动的, 程序的每个动作都是由内部某个事件所触发。QT事件的发生和处理成为程序运行的主线,存在于程序整个生命周期。
常见的QT事件类型如下:
键盘事件: 按键按下和松开
鼠标事件: 鼠标移动,鼠标按键的按下和松开
拖放事件: 用鼠标进行拖放
滚轮事件: 鼠标滚轮滚动
绘屏事件: 重绘屏幕的某些部分
定时事件: 定时器到时
焦点事件: 键盘焦点移动
进入和离开事件: 鼠标移入widget之内,或是移出
移动事件: widget的位置改变
大小改变事件: widget的大小改变
显示和隐藏事件: widget显示和隐藏
窗口事件: 窗口是否为当前窗口
QT将系统产生的消息转化为QT事件,QT事件被封装为对象,所有的QT事件均继承抽象类QEvent,用于描述程序内部或外部发生的动作,任意的QObject对象都具备处理QT事件的能力。
一、键盘事件
头文件
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
#include <QDebug>
#include <QCloseEvent>
#include <QKeyEvent>
#include <QMouseEvent>
#include <QTimerEvent>
QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE
class Widget : public QWidget
{
Q_OBJECT
public:
int nIdFast;
int nIdSlow;
public:
Widget(QWidget *parent = nullptr);
~Widget();
public:
//void closeEvent(QCloseEvent *event);
void keyPressEvent(QKeyEvent *event);
//void mousePressEvent(QMouseEvent *event);
//void timerEvent(QTimerEvent * 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);
//ui->pushButton->setText("close");
//ui->label->setText("哈哈");
nIdSlow = startTimer(1000);
nIdFast = startTimer(500);
//QObject::connect(ui->pushButton,&QPushButton::clicked,this,&QWidget::close);
QObject::connect(ui->pushButton,SIGNAL(clicked()),this,SLOT(clos