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

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

    (7)鼠标事件

    (8)鼠标事件关键代码

    1. void MainWindow::mousePressEvent(QMouseEvent *event) //鼠标按下事件
    2. {
    3. QPoint position;
    4. position=event->pos();
    5. qDebug() << position;
    6. if(event->button()==Qt::LeftButton)
    7. qDebug("左键按下");
    8. else if(event->button()==Qt::RightButton)
    9. qDebug("右键按下");
    10. else if(event->button()==Qt::MidButton)
    11. qDebug("滚轮按下");
    12. }

    4.代码

    widget.h

    1. #ifndef MAINWINDOW_H
    2. #define MAINWINDOW_H
    3. #include
    4. QT_BEGIN_NAMESPACE
    5. namespace Ui {
    6. class MainWindow;
    7. }
    8. QT_END_NAMESPACE
    9. class MainWindow : public QMainWindow
    10. {
    11. Q_OBJECT
    12. public:
    13. MainWindow(QWidget *parent = nullptr);
    14. ~MainWindow();
    15. virtual void keyPressEvent(QKeyEvent *event); //按键按下事件
    16. virtual void mousePressEvent(QMouseEvent *event); //鼠标按下事件
    17. private slots:
    18. void CreateNewFile(void); //创建新文件
    19. void Exit(void); //退出
    20. void OpenFile(void); //打开文件
    21. void SaveFile(void); //保存文件
    22. private:
    23. Ui::MainWindow *ui;
    24. };
    25. #endif // MAINWINDOW_H

  • 相关阅读:
    java“贪吃蛇”小游戏
    配置docker镜像加速
    山西电力市场日前价格预测【2023-10-29】
    做软件测试如何突破月薪20K?
    算法与规则
    git pull 报错: 在签出前,请清理存储库工作树
    不同语言采集【淘宝1688拼多多API】平台数据的方式
    com.google.gson.internal.LinkedTreeMap cannot be cast to XXX
    【故障公告】1个存储过程拖垮整个数据库
    Vue中给对象添加新属性时,界面不刷新怎么办?
  • 原文地址:https://blog.csdn.net/byhyf83862547/article/details/136775151