网站网站建设多少钱/seo实战密码第四版pdf

网站网站建设多少钱,seo实战密码第四版pdf,政府门户网站的重要性,公司名字变了网站备案事件处理 事件是应用程序内部或者外部产生的事情或者动作的统称。 在 Qt 中,事件是用一个对象来管理一个事件的。所有的事件对象都继承自抽象类 QEvent 。事件包括鼠标事件、键盘事件等,发出自 Qt 或操作系统本身。 处理事件一般通过重写相关的 Event 函…

事件处理

事件是应用程序内部或者外部产生的事情或者动作的统称。 在 Qt 中,事件是用一个对象来管理一个事件的。所有的事件对象都继承自抽象类 QEvent 。事件包括鼠标事件、键盘事件等,发出自 Qt 或操作系统本身。

QEvent1

处理事件一般通过重写相关的 Event 函数来实现,Qt 中所有的 Event 函数都是虚函数,都可以进行重写。这通常需要自定义一些控件类来继承 Qt 的控件类(如创建 Label 类继承 QLabel 类),但 ui 界面拖拽出来的控件类型都是 Qt 的内置控件类型(如 QLabel 类),重写不能影响到 ui 的控件。

但 Qt 也提供了解决方法,在 ui 界面对控件右键,选择 提升为… 可以将控件的类型改变成自定义类型(前提是必须继承了相关基类):

QEvent2

1. 处理鼠标事件

注意在重写事件时,包含对应的头文件,事件的函数不包含头文件并不会找不到相关的函数,但其 event 参数一定会找不到它的任何方法。

1.1 enterEvent和leaveEvent

enterEvent 和 leaveEvent 分别表示鼠标进入控件和离开控件的事件。

1.2 mousePressEvent和mouseReleaseEvent

鼠标点击左键、右键、滚轮、侧键等都会触发 mousePressEvent 和 mouseReleaseEvent 。如果想要确定究竟是哪些鼠标按键在触发 mousePressEvent 或 mouseReleaseEvent ,Qt有 Qt::LeftButton 用来表示左键、Qt::RightButton 用来表示右键等,使用代码用来判断什么按键在触发 mousePressEvent:

if(event->button() == Qt::LeftButton)
{qDebug()<<"按下左键";
}
else if(event->button() == Qt::RightButton)
{QDebug()<<"按下右键";
}

1.3 mouseDoubleClickEvent

当鼠标短时间两次点击时,就会触发 mouseDoubleClicked(鼠标双击事件)。但当鼠标双击时,也是会触发两次 mousePressEvent 事件的,所以代码中一定要做好单击和双击的区别判断,否则容易出现单双击同时触发的 Bug。

注意 mouseDoubleClickEvent 和 mouseDoubleClickedEvent 事件都是存在的,不要把这两个搞混了。


#include "label.h"
#include <QMouseEvent>Label::Label(QWidget* parent):QLabel(parent)
{}void Label::mousePressEvent(QMouseEvent *event)
{if(event->button()==Qt::LeftButton){qDebug()<<"点击鼠标左键";}else if(event->button()==Qt::RightButton){qDebug()<<"点击鼠标右键";}}void Label::mouseDoubleClickEvent(QMouseEvent *event)
{if(event->button()==Qt::LeftButton){qDebug()<<"双击鼠标左键";}else if(event->button()==Qt::RightButton){qDebug()<<"双击鼠标右键";}
}

1.4 mouseMoveEvent

mouseMoveEvent(鼠标追踪事件),由于鼠标只是小幅度移动就会产生大量的 mouseMoveEvent 事件,对程序运行的流畅度有很大影响,Qt 的 widget 默认关闭了鼠标追踪,所以即使重写了 mouseMoveEvent 也不会有效果。要想让鼠标追踪生效,需要使用 this->setMouseTracking(true) ,将鼠标追踪开启。

1.5 wheelEvent

wheelEvent(滚动事件),鼠标每次进行滚轮操作时都会触发这个事件,event 中有一个 delta() 会返回鼠标每次滚轮移动的值,向上为整数,向下为负数。

注意 wheelEvent 的头文件是 #include <QWheelEvent> ,且 event 的类型为 QWheelEvent*

#include "label.h"Label::Label(QWidget* parent):QLabel(parent)
{}void Label::wheelEvent(QWheelEvent *event)
{qDebug()<<event->delta();
}

QEvent3

2. 键盘事件

2.1 keyPressEvent

keyPressEvent(键盘按键事件),当键盘上的按键被按下时就会触发该事件,QShorcut 就是基于该事件来设置快捷键的,实际我们也可以通过改写该事件的虚函数来实现快捷键的效果:

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QDebug>MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);
}MainWindow::~MainWindow()
{delete ui;
}void MainWindow::keyPressEvent(QKeyEvent* event)
{if(event->key()==Qt::Key_A && event->modifiers()==Qt::ControlModifier){qDebug()<<"按下ctrl+A";}
}

注意普通按键是 event->key() ,Ctrl 是 event->modifiers()

3. 定时器事件

3.1 QTimerEvent

QTimerEvent(定时器事件)是与定时器有关的事件, QTimer 类就是通过 QTimerEvent 实现的。每一个定时器都有一个定时器的 ID 标识符,在程序中,可以通过不同的 ID 管理不同的定时器,使用多定时器实现程序的多样化。

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QTimerEvent>MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);timerID=this->startTimer(1000);//成员变量}MainWindow::~MainWindow()
{delete ui;
}void MainWindow::timerEvent(QTimerEvent* event)
{if(event->timerId()!=timerID){return;}int value=ui->lcdNumber->intValue();if(value<0){this->killTimer(this->timerID);return;}value-=1;ui->lcdNumber->display(value);
}

4. 窗口移动和大小变化事件

4.1 moveEvent

moveEvent(窗口移动事件),当窗口移动时就会触发该事件,可以通过该事件实时获取窗口此时的位置。

4.2 resizeEvent

resizeEvent(窗口大小变化事件),当窗口大小发生变化时就会触发该事件,可以通过该事件动态调整控件大小。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/73387.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Apache Hive:基于Hadoop的分布式数据仓库

Apache Hive 是一个基于 Apache Hadoop 构建的开源分布式数据仓库系统&#xff0c;支持使用 SQL 执行 PB 级大规模数据分析与查询。 主要功能 Apache Hive 提供的主要功能如下。 HiveServer2 HiveServer2 服务用于支持接收客户端连接和查询请求。 HiveServer2 支持多客户端…

cfca 申请国密证书流程

之前给某银行开发项目&#xff0c;需要用到cfca国密双证证书&#xff0c;证书类型为企业双证的作为接口加密的密钥。 因为是第一次对接&#xff0c;其中走了不少的弯路&#xff0c;现将申请的流程发布出来做下记录 1、需要找到cfca的相关人员进行测试证书的申请 2、大概1天的…

基于Spring Boot的乡村养老服务管理系统的设计与实现(LW+源码+讲解)

专注于大学生项目实战开发,讲解,毕业答疑辅导&#xff0c;欢迎高校老师/同行前辈交流合作✌。 技术范围&#xff1a;SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容&#xff1a;…

数字孪生技术如何为制造业开辟新天地?

1. 数字孪生在制造业的崛起背景 1.1 数字孪生的概念演进 “数字孪生”(Digital Twin)一词最早由美国密歇根大学Michael Grieves博士在2002年提出,但当时并未称之为“数字孪生”,而是以“信息镜像模型”描述数字世界与物理世界的映射关系。直到2010年前后,美军、NASA等在…

asp.net core mvc模块化开发

razor类库 新建PluginController using Microsoft.AspNetCore.Mvc;namespace RazorClassLibrary1.Controllers {public class PluginController : Controller{public IActionResult Index(){return View();}} }Views下Plugin下新建Index.cshtml {ViewBag.Title "插件页…

2024年MathorCup数学建模C题物流网络分拣中心货量预测及人员排班解题全过程文档加程序

2024年第十四届MathorCup高校数学建模挑战赛 C题 物流网络分拣中心货量预测及人员排班 原题再现&#xff1a; 电商物流网络在订单履约中由多个环节组成&#xff0c;图1是一个简化的物流网络示意图。其中&#xff0c;分拣中心作为网络的中间环节&#xff0c;需要将包按照不同流…

鸿蒙Flutter开发故事:不,你不需要鸿蒙化

在华为牵头下&#xff0c;Flutter 鸿蒙化如火如荼进行&#xff0c;当第一次看到一份上百个插件的Excel 列表时&#xff0c;我也感到震惊&#xff0c;排名前 100 的插件赫然在列&#xff0c;这无疑是一次大规模的军团作战。 然后&#xff0c;参战团队鱼龙混杂&#xff0c;难免有…

Unity音频混合器如何暴露参数

音频混合器是Unity推荐管理音效混音的工具&#xff0c;那么如何使用代码对它进行管理呢&#xff1f; 首先我在AudioMixer的Master组中创建了BGM和SFX的分组&#xff0c;你也可以直接用Master没有问题。 这里我以BGM为例&#xff0c;如果要在代码中进行使用就需要将参数暴露出去…

JAVA学习--java数组--打印稀疏数组和稀疏数组的还原

1.题目描述 2.代码实现 打印二维数组 public class test04 {public static void main(String args[]){//1.创建一个二维数组11*11&#xff0c;0代表没有棋子&#xff0c;1代表黑&#xff0c;2代表白棋int[][] array1new int[11][11];array1[1][2]1;array1[2][3]2;//输出原…

Day20-前端Web案例——部门管理

目录 部门管理1. 前后端分离开发2. 准备工作2.1 创建Vue项目2.2 安装依赖2.3 精简项目 3. 页面布局3.1 介绍3.2 整体布局3.3 左侧菜单 4. Vue Router4.1 介绍4.2 入门4.3 案例4.4 首页制作 5. 部门管理5.1部门列表5.1.1. 基本布局5.1.2 加载数据5.1.3 程序优化 5.2 新增部门5.3…

vue 点击放大,图片预览效果

背景&#xff1a; 在使用vue框架element组件的背景下&#xff0c;我们对图片的展示需要点击放大(单张)&#xff1b;如果是多张图片&#xff0c;要支持左右滑动查看多张图片(多张)。 单张图片放大&#xff0c;el-image图片组件&#xff0c;或者原生的img标签。 多张图片放大&…

学习笔记--基于Sa-Token 实现Java项目单点登录+同端互斥检测

目录 同端互斥登录 单点登录SSO 架构选型 模式二: URL重定向传播 前后端分离 整体流程 准备工作 搭建客户端 搭建认证中心SSO Server 环境配置 开放认证接口 启动类 跨域处理 同端互斥登录 同端互斥登陆 模块 同端互斥登录指&#xff1a;同一类型设备上只允许单地…

本地生活服务APP开发,市场发展全新商业机遇

随着移动互联网的快速发展&#xff0c;人们的消费和生活习惯发生了巨大改变&#xff0c;本地生活服务市场迎来了发展爆发期&#xff01;从外卖、团购等&#xff0c;人们越来越依赖通过手机APP解决日常生活中的各种需求。对于企业而言&#xff0c;一款完善、多样、便捷的本地生活…

代码随想录算法训练营第五十六天 | 108.冗余连接 109.冗余连接II

108. 冗余连接 卡码网题目链接&#xff08;ACM模式&#xff09;(opens new window) 题目描述 有一个图&#xff0c;它是一棵树&#xff0c;他是拥有 n 个节点&#xff08;节点编号1到n&#xff09;和 n - 1 条边的连通无环无向图&#xff08;其实就是一个线形图&#xff09;…

2024年MathorCup数学建模D题量子计算在矿山设备配置及运营中的建模应用解题文档与程序

2024年第十四届MathorCup高校数学建模挑战赛 D题 量子计算在矿山设备配置及运营中的建模应用 原题再现&#xff1a; 随着智能技术的发展&#xff0c;智慧矿山的概念越来越受到重视。越来越多的设备供应商正在向智慧矿山整体解决方案供应商转型&#xff0c;是否具备提供整体解…

交换机(access端口)

任务&#xff1a;对access有更深入的理解 通过网盘分享的文件&#xff1a;交换机&#xff08;access&#xff09;.zip 链接: https://pan.baidu.com/s/1cMC6Na_1PLo6zOHazFplQQ?pwd23a5 提取码: 23a5 SW1 <Huawei>sys [Huawei]dis vlan The total number of vlans …

AI大白话(四):自然语言处理——AI是如何理解和生成人类语言的?

🌟引言: 专栏:《AI大白话》 AI大白话(一):5分钟了解AI到底是什么? AI大白话(二):机器学习——AI是怎么“学习“的? AI大白话(三):深度学习——AI的‘大脑‘是如何构建的? 大家好!欢迎回到"AI大白话"系列。前面我们聊了AI的基本概念、机器学习的原理…

扩展卡尔曼滤波

1.非线性系统的线性化 标准卡尔曼滤波 适用于线性化系统&#xff0c;扩展卡尔曼滤波 则扩展到了非线性系统&#xff0c;核心原理就是将非线性系统线性化&#xff0c;主要用的的知识点是 泰勒展开&#xff08;我另外一篇文章的链接&#xff09;&#xff0c;如下是泰勒展开的公式…

关于 51 单片机显示多个数码管时出现残影

残影现象&#xff1a; 出现残影代码&#xff1a; #include <REGX52.H> #include <INTRINS.H> void Delayxms(unsigned int x) //11.0592MHz {while(x){unsigned char i, j;_nop_();i 2;j 199; do{while (--j);} while (--i);x--;} } void DisplayDigitalNumb…

InnoDB 引擎核心知识点

InnoDB 引擎核心知识点 6.1 逻辑存储结构 表空间&#xff08;Tablespace&#xff09;&#xff1a;所有数据逻辑上存储在一个表空间中&#xff0c;物理上可能由多个文件组成。段&#xff08;Segment&#xff09;&#xff1a;分为数据段&#xff08;B树叶子节点&#xff09;、索引…