#QT(事件--快捷键保存文件)

1.IDE:QTCreator


2.实验:QEvent,QMouseEvent,QKeyEvent。

在上一个文本编辑器的基础上实现快捷键"ctrl+s"保存文件。


3.记录

(1)查看QEVENT的有效事件

(2) 所有时间均继承于QEvent,任意QObject对象都可以处理事件,而大多数类都继承于QObject。

(3)事件分为两类:a.自动发生,定时器事件。b.用户交互发生,鼠标按下,键盘输入。

(4)QEvent继承于QObject,而所有事件又继承于QEvent,QObject中事件处理函数为虚函数,所以所有的事件处理函数都为虚函数。虚函数基类必须写virtual,派生类不是必须写virtual。

(5)在实现快捷键保存时主要查看QKeyEvent和QKeyPressEvent

(6)快捷键实现保存的关键代码

void MainWindow::keyPressEvent(QKeyEvent *event)    //键盘按下事件
{
    if(event->modifiers()==Qt::CTRL && event->key()==Qt::Key_S)
        SaveFile();
}

(7)鼠标事件

(8)鼠标事件关键代码

void MainWindow::mousePressEvent(QMouseEvent *event)  //鼠标按下事件
{
    QPoint position;
    position=event->pos();
    qDebug() << position;
    if(event->button()==Qt::LeftButton)
        qDebug("左键按下");
    else if(event->button()==Qt::RightButton)
        qDebug("右键按下");
    else if(event->button()==Qt::MidButton)
        qDebug("滚轮按下");
}

4.代码

widget.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>

QT_BEGIN_NAMESPACE
namespace Ui {
class MainWindow;
}
QT_END_NAMESPACE

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();
    virtual void keyPressEvent(QKeyEvent *event);     //按键按下事件
    virtual void mousePressEvent(QMouseEvent *event);  //鼠标按下事件
private slots:
    void CreateNewFile(void);    //创建新文件
    void Exit(void);         //退出
    void OpenFile(void);    //打开文件
    void SaveFile(void);   //保存文件
private:
    Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

数学建模-邢台学院

文章目录 1、随机抽取的号码在总体的排序2、两端间隔对称模型 1、随机抽取的号码在总体的排序 10个号码从小到大重新排列 [ x 0 , x ] [x_0, x] [x0​,x] 区间内全部整数值 ~ 总体 x 1 , x 2 , … , x 10 总体的一个样本 x_1, x_2, … , x_{10} ~ 总体的一个样本 x1​,x2​,……

3_springboot_shiro_jwt_多端认证鉴权_Redis缓存管理器

1. 什么是Shiro缓存管理器 上一章节分析完了Realm是怎么运作的&#xff0c;自定义的Realm该如何写&#xff0c;需要注意什么。本章来关注Realm中的一个话题&#xff0c;缓存。再看看 AuthorizingRealm 类继承关系 其中抽象类 CachingRealm &#xff0c;表示这个Realm是带缓存…

使用Arthas

Arthas 是 Alibaba 在 2018 年 9 月开源的 Java 诊断工具。支持 JDK6&#xff0c; 采用命令行交互模式&#xff0c;可以方便的定位和诊断 线上程序运行问题。Arthas 官方文档十分详细&#xff0c;详见&#xff1a;https://alibaba.github.io/arthas 1、下载 代码托管地址之一…

不想当智能手表游戏掌机MP4的开发板不是好86盒

有道是&#xff0c;生活不易&#xff0c;多才多艺。 只是没想到有一天连开发板也能适用这句话。 你以为它只是一个平平无奇的智能家居86盒。 但它必要时它也可以化身智能手表。 或者是一个能随身携带的MP4。 甚至可以是一个能玩植物大战僵尸的触屏游戏掌机&#xff01; 项目简…

【CSP试题回顾】202212-3-JPEG 解码

CSP-202212-3-JPEG 解码 关键点&#xff1a;Z字扫描 在JPEG压缩中&#xff0c;Z字形扫描是一种将8x8块的数据按照Z字形&#xff08;或之字形&#xff09;顺序重新排列的过程。这样做的目的是为了将相似的数据&#xff08;尤其是零值&#xff09;放置在一起&#xff0c;从而提高…

windows 安装cuda 11.2过程记录

参考&#xff1a; https://blog.csdn.net/m0_45447650/article/details/123704930 https://zhuanlan.zhihu.com/p/99880204?from_voters_pagetrue 在显卡驱动被正确安装的前提下&#xff0c;在命令行里输入nvidia-smi.exe 下载CUDA Toolkit: https://developer.nvidia.com/…

C++ Qt开发:QTcpSocket网络通信组件

Qt 是一个跨平台C图形界面开发库&#xff0c;利用Qt可以快速开发跨平台窗体应用程序&#xff0c;在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置&#xff0c;实现图形化开发极大的方便了开发效率&#xff0c;本章将重点介绍如何运用QTcpSocket组件实现基于TCP的网络通信…

Flutter-自定义图片3D画廊

效果 需求 3D画廊效果 设计内容 StackGestureDetectorTransformPositioned数学三角函数 代码实现 具体代码大概300行 import dart:math;import package:flutter/material.dart; import package:flutter_xy/widgets/xy_app_bar.dart;import ../../r.dart;class ImageSwitc…

[errcode] => 47003 [errmsg] => argument invalid! data.thing2.value invalid

[errcode] > 47003 [errmsg] > argument invalid! data.thing2.value invalid rid: 65f79ad9-09ea6af5-285a03af 检查了好大一圈&#xff0c;经过测试&#xff0c;原因是公众号模板消息接口中的字段不能超过20个汉字&#xff0c;包括标点符号。 虽然接口文档中参数说明…

基于深度学习的口罩人脸识别研究进展

MTCNN模型训练输入的所有图像都是正样本&#xff08;戴口罩的照片&#xff09;&#xff0c;没有负样本作为模型输入。在后续的识别任务模块中&#xff0c;导入MTCNN模型检测结果&#xff0c;对特征点进行编码比较进行识别。 基于MTCNN的口罩人脸识别框架可分为四个阶段&#xf…

数据结构试卷第九套

1.时间复杂度 2.树&#xff0c;森林&#xff0c;二叉树的转换 2.1树转二叉树 给所有的兄弟节点之间加一条连线&#xff1b;去线&#xff0c;只保留当前根节点与第一个叶子节点的连线&#xff0c;删除它与其他节点之间的连线&#xff1b;然后根据左孩子右兄弟进行调整&#xf…

C#装箱和拆箱

一&#xff0c;装箱 装箱是指将值类型转化为引用类型。 代码如下&#xff1a; 装箱的内部过程 当值类型需要被装箱为引用类型时&#xff0c;CLR&#xff08;Common Language Runtime&#xff09;会为值类型分配内存&#xff0c;在堆上创建一个新的对象。值类型的数据会被复…

Adobe Illustrator 2024 v28.3 (macOS, Windows) - 矢量绘图

Adobe Illustrator 2024 v28.3 (macOS, Windows) - 矢量绘图 Acrobat、After Effects、Animate、Audition、Bridge、Character Animator、Dimension、Dreamweaver、Illustrator、InCopy、InDesign、Lightroom Classic、Media Encoder、Photoshop、Premiere Pro、Adobe XD 请访…

【机器学习】详细解析Sklearn中的StandardScaler---原理、应用、源码与注意事项

【机器学习】详细解析Sklearn中的StandardScaler—原理、应用、源码与注意事项 &#x1f308; 个人主页&#xff1a;高斯小哥 &#x1f525; 高质量专栏&#xff1a;Matplotlib之旅&#xff1a;零基础精通数据可视化、Python基础【高质量合集】、PyTorch零基础入门教程&#x…

QT UI窗口常见操作

MainWidget::MainWidget(QWidget *parent): QWidget(parent), ui(new Ui::MainWidget) {ui->setupUi(this);// 设置主窗口背景颜色QPalette plt;plt.setColor(QPalette::Window,QColor(180,220,130));this->setPalette(plt);// 禁止窗口最大化按钮setWindowFlags(windowF…

基于多源遥感图像多级协同融合的舰船识别算法

源自&#xff1a;电子工程与电子技术 作者&#xff1a;张亚丽 冯伟 全英汇 邢孟道 “人工智能技术与咨询” 发布 摘 要 针对极化合成孔径雷达(polarimetric synthetic aperture radar, PolSAR)图像存在斑点噪声严重、可视性差、直接影响目标识别精度的问题, 提出一种基…

SpringBoot实现邮件发送

一.准备 引入starter <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-mail</artifactId> </dependency>二.邮件发送需要的配置 因为各大邮件都有其对应安全系统&#xff0c;不是项目中想用就…

【晴问算法】入门篇—贪心算法—区间不相交问题

题目描述 给定n个开区间&#xff0c;从中选择尽可能多的开区间&#xff0c;使得这些开区间两两没有交集。 输入描述 输出描述 输出一个整数&#xff0c;表示最多选择的开区间个数。 样例1输入 4 1 3 2 4 3 5 6 7 输出 3 解释 最多选择(1,3)、(3,5)、(6,7)三个区间&#xff0c;它…

【IEDM2023】背势垒电荷运动诱导GaN HEMT随时间的非稳态击穿

分享一篇2023年IEDM上GaN HEMT&#xff08;高电子迁移率晶体管&#xff09;的研究论文&#xff0c;标题为“Charge Movement in Back Barrier Induced Time-Dependent On-State Breakdown of GaN HEMT”。论文讨论了在GaN HEMT中&#xff0c;由于背栅&#xff08;Back Barrier&…

【数据库】数据库基本知识

1.数据库的四个基本概念 1.1 数据&#xff1a;描述事务的符号记录 1.2 数据库&#xff1a;概括的说&#xff0c;数据库数据具有永久存储、有组织的、可共享的大量数据的集合&#xff0c;数据库中的数据按一定的数据模型组织、描述和储存&#xff0c;具有较小的冗余度、较高的…