在上一个文本编辑器的基础上实现快捷键"ctrl+s"保存文件。
(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("滚轮按下");
- }
widget.h
- #ifndef MAINWINDOW_H
- #define MAINWINDOW_H
-
- #include
-
- 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