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_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