首页 > 其他分享 >#QT(事件--快捷键保存文件)

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

时间:2024-03-17 11:29:05浏览次数:29  
标签:QT -- void 快捷键 按下 事件 MainWindow event 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

标签:QT,--,void,快捷键,按下,事件,MainWindow,event,Qt
From: https://blog.csdn.net/byhyf83862547/article/details/136775151

相关文章

  • java核心技术卷1 第五章:继承
    学习重要的是出,而不是入,此前一直埋头向前学,忽视了复习的重要性。写一个博客作为自己的学习笔记,也可作为以后查漏补缺的资料,温故而知新。类,超类和子类一个继承另一个类,父类也称为超类,基类。"超类"中的超来自于集合理论,指的是父类,与之后的super关键字对应java中,类的继承默认为pu......
  • @RestController
    @RestController是SpringFramework中的一个注解,主要用于标识一个类是RESTful服务的控制器(Controller)。在SpringMVC中,通常使用@Controller注解来定义控制器类,而@RestController是@Controller的一个特殊版本,它结合了@Controller和@ResponseBody注解的功能。具体......
  • vscode配置别名
    vscode配置别名vite.config.tsimportpathfrom'path'resolve:{alias:{'@':path.join(__dirname,'src')}}解决path不能识别的问题npmi@types/node-D解决vscode没有智能提示的问题,tsconfig.json"compilerOptions"......
  • Dapper CURD
    #region使用匿名类插入数据//IDbConnectionconnection=newSqlConnection("DataSource=PC20171312\\SQLEXPRESS;InitialCatalog=Users;uid=sa;pwd=sql123;MultipleActiveResultSets=True");//varresult=connection.Execute......
  • 并查集
    并查集并查集是一种可以动态维护若干个不重叠集合,并且支持合并与查询的数据结构,主要用于处理不相交集合的的合并关系。为了具体实现并查集这种数据结构,首先我们需要定义集合的表示方法。在并查集中,我们采用"代表元"法,即为每一个集合选择一个固定的元素,作为整个集合的代表。其......
  • 关于Android studio无法勾选SDK的问题
    这是我遇到的问题,相信也是大多数人遇到的问题,我的经历是之前下载过一次Androidstudio,用过一段时间后虚拟机出问题了,一直连不上,我都是用手机代替运行,发现太麻烦了,还是决定重新一遍,于是我重新安装了Androidstudio。发现这个地方是无法勾选的,于是我试了好多方法补充:大家没必要去专......
  • lc2104 子数组的范围和
    给定数组nums[n],子数组的范围指子数组中最大元素与最小元素的差值,返回nums中所有子数组的范围之和。子数组是数组的连续非空序列。1<=n<=1000;-1e9<=nums[i]<=1e9分别考虑每个元素作为最小和最大值的情况,统计作为最小值的次数,作为最大值的次数,这个可以用单调栈求出,然后统计各位......
  • 中文网址转url编码网址
    要将一个中文网址转换为url编码格式的网址,非常简单,只需要使用Windows提供的有一个函数即可。C++/Windows/ATL#include<atlutil.h>//。。。。。。。。。。。。。。。。。。。。{constTCHAR*val=_T("http://www.中文.com");DWORDlen=lstrlen(val)*3+1;......
  • 微调大型语言模型进行命名实体识别
    大型语言模型的目标是理解和生成与人类语言类似的文本。它们经过大规模的训练,能够对输入的文本进行分析,并生成符合语法和语境的回复。这种模型可以用于各种任务,包括问答系统、对话机器人、文本生成、翻译等。命名实体识别(NamedEntityRecognition,简称NER)是一种常见的应用方法,可......
  • 在Go中如何停止程序
    在Go中如何停止程序原创 TimLiu 爱发白日梦的后端 2024-03-1707:01 广东 听全文爱发白日梦的后端专注Go语言领域的发展,学习成为更牛逼的架构师,日常分享Go语言、架构、软件工具的使用。177篇原创内容公众号点击上方“名片”,关注公众号,加群可获......