当前位置: 首页 > wzjs >正文

上什么网站做会计教育2022今天刚刚发生地震了

上什么网站做会计教育,2022今天刚刚发生地震了,wordpress首页改颜色,聊城网站备案QT中的事件 1.事件的定义和作用2.QT中事件产生和派发流程2.1 步骤2.2 图示示例代码:(event函数接收所有事件) 3.常见的事件3.1 鼠标事件示例代码:现象: 3.2 按键事件3.3 窗口大小改变事件 4.举例说明示例代码&#xff…

QT中的事件

  • 1.事件的定义和作用
  • 2.QT中事件产生和派发流程
    • 2.1 步骤
    • 2.2 图示
      • 示例代码:(event函数接收所有事件)
  • 3.常见的事件
    • 3.1 鼠标事件
      • 示例代码:
      • 现象:
    • 3.2 按键事件
    • 3.3 窗口大小改变事件
  • 4.举例说明
    • 示例代码:

1.事件的定义和作用

通俗的话:用户对于QT程序所做的任何行为动作,都叫做事件
比如:
用户用鼠标点击了窗口 --》鼠标点击事件 用户按下了键盘上的某个按键 --》按键事件
用户用鼠标把窗口拉大,拉小 --》窗口大小改变事件
用户用鼠标把窗口拖动 --》移动事件
\quad QT中往往用事件来做一些复杂的功能
比如:窗口放大的时候 --》窗口背景色不断的变红
获取物理键盘输入的字符
判断点击的是鼠标的左键还是鼠标的右键,中间键

QEvent类:QT中所有事件类的父类
QMouseEvent --》鼠标事件常用方法:button()   //返回鼠标点击的按键x()        //返回x坐标y()        //返回y坐标
QKeyEvent   --》按键事件常用方法:int QKeyEvent::key() const返回值:按键的键值(不是ASCII码值)QString QKeyEvent::text() const返回值:按键的字面值
QResizeEvent --》大小改变事件
QMoveEvent --》移动事件

2.QT中事件产生和派发流程

2.1 步骤

第一步:事件的产生用户做了某个动作,就会自动产生对应的事件不同的行为动作,会产生不同类型的事件
第二步:事件的派发--》把这个事件发送出去(QT系统自动完成的)[static] void QCoreApplication::postEvent(QObject *receiver, QEvent *event)参数:receiver --》事件的接收者(事件作用于谁,谁就是接收者)event --》打算发送什么事件   
第三步:事件的响应(接收)[virtual] bool QObject::event(QEvent *e)   //专门接收所有的事件,所以的事件都必须经过该函数来接收参数:e --》保存目前产生的事件Type QEvent::type() const     //返回QT支持的所有的事件类型返回值:QEvent::Close  --》窗口关闭QEvent::KeyPress --》按键QEvent::Move --》移动QEvent::Resize --》大小改变   
第四步:事件的处理(响应)函数Qt针对不同的事件类型,定义了大量的事件处理(响应)函数比如:对于鼠标事件,处理函数有如下这些mouseMoveEvent(QMouseEvent *event)mousePressEvent(QMouseEvent *event)mouseReleaseEvent(QMouseEvent *event)按键事件void QWidget::keyPressEvent(QKeyEvent *event)    //按下按键void QWidget::keyReleaseEvent(QKeyEvent *event)  //松开按键移动事件void QWidget::moveEvent(QMoveEvent *event)大小改变事件void QWidget::resizeEvent(QResizeEvent *event)关闭事件void QWidget::closeEvent(QCloseEvent *event)命名规律: 动词Event(事件类型指针)

2.2 图示

在这里插入图片描述

示例代码:(event函数接收所有事件)

// widget.h
#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>
#include <QEvent>
#include <QDebug>QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACEclass Widget : public QWidget
{Q_OBJECTpublic:Widget(QWidget *parent = nullptr);~Widget();/*证明:事件流程的第三步,所有的事件都会被event函数接收多态的知识:子类重写父类的同名虚函数,到时候调用的就是子类自己的*/bool event(QEvent *event);private:Ui::Widget *ui;
};
#endif // WIDGET_H// widget.cpp
#include "widget.h"
#include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);
}Widget::~Widget()
{delete ui;
}bool Widget::event(QEvent *event)
{//判断产生了哪些事件(判断其中一部分)if (event->type() == QEvent::Close) {qDebug()<<"窗口关闭";}if (event->type() == QEvent::KeyPress) {qDebug()<<"键盘按下";}if (event->type() == QEvent::Move) {qDebug()<<"窗口移动";}
}

3.常见的事件

3.1 鼠标事件

示例代码:

// widget.h
#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>
#include <QMouseEvent>
#include <QDebug>QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACEclass Widget : public QWidget
{Q_OBJECTpublic:Widget(QWidget *parent = nullptr);~Widget();/*证明事件流程的第四步:event收到事件之后,会调用事件响应函数重写一部分事件响应函数*/void mousePressEvent(QMouseEvent *e);private:Ui::Widget *ui;
};
#endif // WIDGET_H// widget.cpp
#include "widget.h"
#include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);
}Widget::~Widget()
{delete ui;
}//鼠标事件对应的事件响应函数
void Widget::mousePressEvent(QMouseEvent *e)
{// 获取左键,右键,中间键if (e->button() == Qt::LeftButton){qDebug()<<"此时按下的是鼠标左键";}if (e->button() == Qt::RightButton){qDebug()<<"此时按下的是鼠标右键";}if (e->button() == Qt::MidButton){qDebug()<<"此时按下的是鼠标中间键";}//获取坐标位置qDebug()<<"点击的窗口位置坐标是: "<<e->x()<<","<<e->y();
}

现象:

在这里插入图片描述

3.2 按键事件

3.3 窗口大小改变事件

4.举例说明

   1.鼠标点击左键 --》主窗口变成红色右键 --》主窗口变成绿色大小改变事件void QWidget::resizeEvent(QResizeEvent *event)当窗口 变大 --》要求窗口中所有按钮的字体变大当窗口 变小 --》要求窗口中所有按钮的字体变小关闭事件void QWidget::closeEvent(QCloseEvent *event)要求:当你关闭窗口的时候,模仿有些软件,弹出一个消息盒子,提示亲,你真的要关闭吗--》ok、cancel2.键盘按下字母a --》窗口大小改变成  1000*800大小int QKeyEvent::key() const返回值:你按下的那个按键的键值,详情请参见QT助手void QWidget::resize(int w, int h)

示例代码:

// mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H#include <QMainWindow>
#include <QEvent>
#include <QMouseEvent>
#include <QResizeEvent>
#include <QFont>
#include <QCloseEvent>
#include <QMessageBox>
#include <QKeyEvent>
QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACEclass MainWindow : public QMainWindow
{Q_OBJECTpublic:MainWindow(QWidget *parent = nullptr);~MainWindow();//重写鼠标事件的事件响应函数void mousePressEvent(QMouseEvent *event);void resizeEvent(QResizeEvent *event);void closeEvent(QCloseEvent *event);void keyPressEvent(QKeyEvent *event);
private:Ui::MainWindow *ui;int n;
};
#endif // MAINWINDOW_H// mainwindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);n=1;
}MainWindow::~MainWindow()
{delete ui;
}void MainWindow::mousePressEvent(QMouseEvent *event)
{if(event->button()==Qt::LeftButton)this->setStyleSheet("background-color:rgb(255,0,0);");else if(event->button()==Qt::RightButton)this->setStyleSheet("background-color:rgb(0,255,0);");
}void MainWindow::resizeEvent(QResizeEvent *event)
{//保存旧的大小const QSize &oldsize=event->oldSize();//保存当前大小const QSize &cursize=event->size();//比较两个大小if(cursize.width()>oldsize.width() || cursize.height()>oldsize.height()){if(n<72)n++;elsen=72;QFont myfont("楷体",n);ui->pushButton->setFont(myfont);ui->pushButton_2->setFont(myfont);ui->pushButton_3->setFont(myfont);}if(cursize.width()<oldsize.width() || cursize.height()<oldsize.height()){if(n>0)n--;elsen=1;QFont myfont("楷体",n);ui->pushButton->setFont(myfont);ui->pushButton_2->setFont(myfont);ui->pushButton_3->setFont(myfont);}
}void MainWindow::closeEvent(QCloseEvent *event)
{//弹出消息盒子auto ret=QMessageBox::warning(this,"确定是否关闭","亲!你真的要狠心舍我而去!!",QMessageBox::Ok|QMessageBox::Cancel);//判断你点击的是哪个按钮if(ret==QMessageBox::Ok){//关闭窗口this->close();}else{//保持原样子,不关闭event->ignore(); //忽略关闭事件}
}void MainWindow::keyPressEvent(QKeyEvent *event)
{//获取你按的那个按键if(event->key()==Qt::Key_A)this->resize(1920,1080);}
http://www.dtcms.com/wzjs/44060.html

相关文章:

  • 咨询公司是干什么的优化关键词排名
  • 西安市高新区建设规划局网站石家庄热搜
  • 在上面网站上可以做统计图b2b网站
  • 什么网站了解国家建设的行情企业网站设计代码
  • 佛山市品牌网站建设哪家好广州推广工具
  • 什么不属于网站推广软件营销推广方案模板
  • 做智能网站系统下载软件优化大师哪个好
  • 网站域名是网站架构吗平台营销策略
  • 怎么做百度网盘链接网站怎样推广自己的app
  • 沈阳 商城 网站 开发河北网站建设制作
  • 做网站实训报告黑帽seo是作弊手法
  • 安徽奶茶加盟网站建设百度爱采购排名
  • 建设一个网站要钱吗平台推广方式
  • 网站源码哪个好互联网营销方法有哪些
  • 自动生成前端页面工具百度快照优化排名
  • 网站建设需求表网站生成app工具
  • 网站空间商怎么做seo排名分析
  • 响应式网站用什么软件做效果自媒体营销的策略和方法
  • lindberg定制网站5118大数据平台官网
  • 专业的手机网站建设公司双桥seo排名优化培训
  • 湖北移动官网网站建设推广网站的公司
  • 杭州哪家做网站比较好关键词挖掘站网
  • app介绍网站模板如何引流客源最快的方法
  • 济南网站搭建公司千峰培训可靠吗?
  • 南庄建网站seo网站推广方法
  • 网站qq线客服咋做辅导班培训机构
  • 莆田网站制作计划网络舆情监测专业
  • 建设网站需要什么资质网络营销是干嘛的
  • 网站建设运营规划方案阿里云万网域名购买
  • 小程序怎么制作网站国外搜索引擎排行榜