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

news2024/12/23 22:07:34

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

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

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

相关文章

机试:元音处理

问题描述 代码示例 #include <bits/stdc.h> using namespace std;int main(){char string[1000];char ch getchar();int i 0;while(ch ! \n){string[i] ch;ch getchar();}char str[1000];int k 0;for(int j 0; j < i; j){if(string[j] a || string[j] e || …

(含链接)2024年NVIDIA GPU技术大会开发者合集(专为开发者挑选的合集)

2024年NVIDIA GPU技术大会开发者合集 我专门为开发者整理了NVIDIA GPU技术大会上专注技术的内容合集, 希望可以帮助开发者朋友们快速了解NVIDIA的最新技术. 注意:在电脑端打开更友好, 可以直接进入每一项的网页 文章目录 2024年NVIDIA GPU技术大会开发者合集如何登录和预约会…

Nacos注册中心与配置管理

Nacos注册中心与配置管理 1 Nacos注册中心1.1.认识Nacos1.2.服务注册到nacos1.3.服务分级存储模型1.4.权重配置1.5.环境隔离1.6.Nacos与Eureka的区别 2 CAP3.Nacos配置管理3.1.统一配置管理3.2.bootstrap了解3.3.配置热更新3.4.配置共享 1 Nacos注册中心 1.1.认识Nacos 国内公…

【经验总结】ubuntu 20.04 git 上传本地文件给 github,并解决出现的问题

1. 在GitHub 上创建仓库 登录 GitHub 个人网站 点击 New 填写 Repository name, 以及 Description (optional) 选择 Public &#xff0c; 并添加 Add a README file 点击 Create repository github repository 创建成功 2. 设置SSH key 在本地 bash 运行&#xff1a;…

Android Kotlin(五)数据流StateFlow和LiveData

Android 上的 Kotlin 数据流 在协程中&#xff0c;与仅返回单个值的挂起函数相反&#xff0c;数据流可按顺序发出多个值。数据流以协程为基础构建&#xff0c;可提供多个值。从概念上来讲&#xff0c;数据流是可通过异步方式进行计算处理的一组数据序列。所发出值的类型必须…

小迪安全42WEB攻防-通用漏洞文件包含LFIRFI伪协议

#知识点: 1、解释什么是文件包含 2、分类-本地LFI&远程RFI 3、利用-配合上传&日志&会话 4、利用-伪协议&编码&算法等 #核心知识: 1、本地包含LFI&远程包含RF1-区别 一个只能包含本地&#xff0c;一个可以远程加载 具体形成原因由代码和环境配置文件决定…

PyQt5使用

安装Pyqt5信号与槽使用可视化界面编辑UI (Pyside2)ui生成之后的使用(两种方法)1 ui转化为py文件 进行import2 动态调用UI文件 安装Pyqt5 pip install pyqt5-tools这时候我们使用纯代码实现一个简单的界面 from PyQt5.QtWidgets import QApplication, QMainWindow, QPushButto…

练习8 Web [GYCTF2020]Blacklist

这道题其实不是堆叠注入&#xff0c;但是我在联合查询无效后&#xff0c;试了一下堆叠&#xff0c;最后一步发现被过滤的sql语句太多了&#xff0c;完全没法 查阅其他wp的过程[GYCTF2020]Blacklist 1&#xff08;详细做题过程&#xff09; 是用的handler语句&#xff0c;只能用…

基于肤色模型(YCbCr模型)的人面定位统计算法,Matlab实现

博主简介&#xff1a; 专注、专一于Matlab图像处理学习、交流&#xff0c;matlab图像代码代做/项目合作可以联系&#xff08;QQ:3249726188&#xff09; 个人主页&#xff1a;Matlab_ImagePro-CSDN博客 原则&#xff1a;代码均由本人编写完成&#xff0c;非中介&#xff0c;提供…

【渗透测试】redis漏洞利用

redis安装及配置 wget http://download.redis.io/releases/redis-3.2.0.tar.gz tar xzf redis-3.2.0.tar.gz cd redis-3.2.0 make cp /root/redis-6.2.6/redis.conf /usr/local/redis/bin/ cd /usr/local/redis/bin/ vi redis.conf #修改内容如下&#xff1a; #protected-mode …

第十三届蓝桥杯(C/C++ 大学B组)

目录 试题 A: 九进制转十进制 试题 B: 顺子日期 试题 C: 刷题统计 试题 D: 修剪灌木 试题 E: X 进制减法 试题 F: 统计子矩阵 试题 G: 积木画 试题 H: 扫雷 试题 I: 李白打酒加强版 试题 J: 砍竹子 试题 A: 九进制转十进制 九进制正整数 ( 2022 )转换成十进制等于多…

【Vite+Ts】自动按需引入Element-Plus

安装插件 cnpm i -D unplugin-vue-components unplugin-auto-import unplugin-element-plus修改vite.config.ts // vite.config.ts import AutoImport from "unplugin-auto-import/vite"; import Components from "unplugin-vue-components/vite"; impor…

字符串函数和内存函数的模拟实现

目录 前言 1. 字符串操作 1.1 strncpy 1.1.1 讲解 1.1.1 模拟实现 1.2 strncat 1.2.1 讲解 1.2.2 模拟实现 2. 字符串检验 2.1 strlen 2.1.1 讲解 2.1.2 模拟实现 2.2 strstr 2.2.1 讲解 2.2.2 模拟实现 3. 字符数组操作 3.1 memcpy 3.1.1 讲解 3.1.2 模拟实…

《操作系统实践-基于Linux应用与内核编程》第10章--实验 Qt聊天程序

前言: 内容参考《操作系统实践-基于Linux应用与内核编程》一书的示例代码和教材内容&#xff0c;所做的读书笔记。本文记录再这里按照书中示例做一遍代码编程实践加深对操作系统的理解。 引用: 《操作系统实践-基于Linux应用与内核编程》 作者&#xff1a;房胜、李旭健、黄…

15届蓝桥杯第三期模拟赛所有题目解析

文章目录 &#x1f9e1;&#x1f9e1;t1_奇数次数&#x1f9e1;&#x1f9e1;思路代码 &#x1f9e1;&#x1f9e1;t2_台阶方案&#x1f9e1;&#x1f9e1;思路代码 &#x1f9e1;&#x1f9e1;t3_约数个数&#x1f9e1;&#x1f9e1;思路代码 &#x1f9e1;&#x1f9e1;t4_最…

特殊文本文件、日志技术

特殊文件 为什么要用这些特殊文件&#xff1f; 存储多个用户的&#xff1a;用户名、密码 特殊文件:Properties属性文件 特点&#xff1a; 都只能是键值对键不能重复文件后缀一般是.properties结尾的 作用&#xff1a;存储一些有关系的键值对数据 Properties 是一个Map集合(键…

Ubuntu Argoverse API安装

1. 创建并进入conda环境 conda create -n Argoverse python3.8 conda activate Argoverse2. 拉取argoverse-api源码 git clone https://github.com/argoai/argoverse-api.git3. 下载高精地图 Download hd_maps.tar.gz from Argoverse 4. 安装api cd argoverse-api pip in…

STM32 Simulink 自动代码生成电机控制——霍尔有感六步方波仿真到开发板运行

目录 前言 方波控制理论 仿真 代码集成到开发板运行 总结 前言 回想以前在学校手写代码实现方波控制&#xff0c;花了不少时间。现在各大MCU厂家都有自己的有感或者无感方波控制的方案。这次尝试用Simulink来完成应用层算法的仿真再到代码生成开发板运行的完整流程。 方波…

达梦数据库管理

一、表空间管理介绍 在 DM 数据库中&#xff0c;表空间由一个或者多个数据文件组成。 DM 数据库中的所有对象在逻辑上都存放在表空间中&#xff0c;而物理上都存储在所属表空间的数据文件中。 DM数据库中的表空间可以分为普通表空间和混合表空间。普通表空间不能存储HUGE表&…

《IEEE Transactions on Robotics》发表!北京大学研究团队推出具有多种运动模态的软体两栖机器人

两栖机器人以其在复杂水陆混合环境中的卓越适应性而脱颖而出&#xff0c;成为非结构化场景下信息监测、资源勘探和灾难救援等多元化任务的理想选择。凭借能够在水生和陆生环境中自如切换的优势&#xff0c;两栖机器人在如上任务执行过程中展现出对多变环境的惊人适应能力。 在…