#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)快捷键实现保存的关键代码

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

(7)鼠标事件

(8)鼠标事件关键代码

cpp 复制代码
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

cpp 复制代码
#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
相关推荐
同学小张1 天前
【端侧AI 与 C++】1. llama.cpp源码编译与本地运行
开发语言·c++·aigc·llama·agi·ai-native
踢球的打工仔1 天前
PHP面向对象(7)
android·开发语言·php
汤姆yu1 天前
基于python的外卖配送及数据分析系统
开发语言·python·外卖分析
Yue丶越1 天前
【C语言】字符函数和字符串函数
c语言·开发语言·算法
翔云 OCR API1 天前
人脸识别API开发者对接代码示例
开发语言·人工智能·python·计算机视觉·ocr
V***u4531 天前
MS SQL Server partition by 函数实战二 编排考场人员
java·服务器·开发语言
这是程序猿1 天前
基于java的ssm框架旅游在线平台
java·开发语言·spring boot·spring·旅游·旅游在线平台
芳草萋萋鹦鹉洲哦1 天前
【elemen/js】阻塞UI线程导致的开关卡顿如何优化
开发语言·javascript·ui
爱学习的小邓同学1 天前
C++ --- 多态
开发语言·c++
颜*鸣&空1 天前
QT实现串口通信+VSPD+串口调试工具
开发语言·qt