textedit.h
#include <QTextEdit>
class TextEdit : public QTextEdit
{
public:
TextEdit(QWidget *parent = 0);
protected:
void keyPressEvent(QKeyEvent *);
};
textedit.cpp
#include "textedit.h"
#include <QKeyEvent>
#include <QDebug>
TextEdit::TextEdit(QWidget *parent) :
QTextEdit(parent)
{
}
void TextEdit::keyPressEvent(QKeyEvent *event)
{
qDebug() << "TextEdit::" << event->key();
// event->ignore();//默认为accept; ignore为忽略当前,事件传递给上一级
QWidget::keyPressEvent(event);//事件传递所有,直至顶级
}
widget.h
#include <QWidget>
namespace Ui {
class Widget;
}
class Widget : public QWidget
{
Q_OBJECT
public:
explicit Widget(QWidget *parent = 0);
~Widget();
protected:
void keyPressEvent(QKeyEvent *);
private:
Ui::Widget *ui;
};
widget.cpp
#include "widget.h"
#include "ui_widget.h"
#include <QKeyEvent>
#include <QDebug>
#include "textedit.h"
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
TextEdit *textEdit = new TextEdit(this);
}
Widget::~Widget()
{
delete ui;
}
void Widget::keyPressEvent(QKeyEvent *event)
{
qDebug() << "Widget::" << event->key();
}