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_NAMESPACEclass MainWindow : public QMainWindow
{Q_OBJECTpublic: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