#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
相关推荐
悟能不能悟38 分钟前
java的java.sql.Date和java.util.Date的区别,应该怎么使用
java·开发语言
循环过三天1 小时前
3.4、Python-集合
开发语言·笔记·python·学习·算法
_院长大人_2 小时前
设计模式-工厂模式
java·开发语言·设计模式
MATLAB代码顾问2 小时前
MATLAB实现决策树数值预测
开发语言·决策树·matlab
不染尘.4 小时前
2025_11_7_刷题
开发语言·c++·vscode·算法
似水এ᭄往昔4 小时前
【C++】--stack和queue
开发语言·c++
csbysj20204 小时前
R 绘图 - 散点图
开发语言
会跑的兔子4 小时前
Android 16 Kotlin协程 第一部分
android·开发语言·kotlin
Js_cold5 小时前
Verilog函数function
开发语言·fpga开发·verilog
我是苏苏5 小时前
C#基础:如何从现有类库复制一个新的类库,并且加入解决方案
开发语言·c#