"MyLineEdit类的keypress事件已触发,键盘按下"
"2022-09-09 22:04:33.810" "主窗口的键盘事件触发,键盘按下"
"主窗口的事件过滤器触发"
"mylineEdit的event函数已经触发"
"MyLineEdit类的keypress事件已触发,键盘按下"
"2022-09-09 22:05:29.685" "主窗口的键盘事件触发,键盘按下"
"主窗口的事件过滤器触发"
"mylineEdit的event函数已经触发"
"MyLineEdit类的keypress事件已触发,键盘按下"
"2022-09-09 22:05:33.897" "主窗口的键盘事件触发,键盘按下"
"主窗口的事件过滤器触发"
"mylineEdit的event函数已经触发"
"MyLineEdit类的keypress事件已触发,键盘按下"
"2022-09-09 22:05:34.483" "主窗口的键盘事件触发,键盘按下"
"主窗口的事件过滤器触发"
"mylineEdit的event函数已经触发"
"MyLineEdit类的keypress事件已触发,键盘按下"
"2022-09-09 22:05:35.553" "主窗口的键盘事件触发,键盘按下"
新建一个mylineedit类
- #ifndef MYLINEEDIT_H
- #define MYLINEEDIT_H
- #include
-
-
- class MyLineEdit : public QLineEdit
- {
- Q_OBJECT
- public:
- explicit MyLineEdit(QWidget *parent=0);
- bool event(QEvent *event);//src6_2
- protected:
- void keyPressEvent(QKeyEvent *event);
- };
-
- #endif // MYLINEEDIT_H
- #include "mylineedit.h"
- #include
- #include
-
-
-
- MyLineEdit::MyLineEdit(QWidget *parent):QLineEdit(parent)
- {
-
- }
-
- bool MyLineEdit::event(QEvent *event)//src6_2
- {
- if(event->type()==QEvent::KeyPress)
- {
- qDebug()<<tr("mylineEdit的event函数已经触发");
- }
- return QLineEdit::event(event);//执行QlineEdit类的event函数的默认操作
- }
-
- void MyLineEdit::keyPressEvent(QKeyEvent *event)
- {
- qDebug()<<tr("MyLineEdit类的keypress事件已触发,键盘按下");
- QLineEdit::keyPressEvent(event);//执行
- event->ignore();//输出后,才将继续执行主窗口的keypressEvent事件
- }
主窗口事件:
- #ifndef MAINWINDOW_6_1_H
- #define MAINWINDOW_6_1_H
-
- #include
- class MyLineEdit;//类的前置声明
-
- QT_BEGIN_NAMESPACE
- namespace Ui { class MainWindow_6_1; }
- QT_END_NAMESPACE
-
- class MainWindow_6_1 : public QWidget
- {
- Q_OBJECT
-
- public:
- MainWindow_6_1(QWidget *parent = nullptr);
- ~MainWindow_6_1();
- bool eventFilter(QObject *obj,QEvent *event);
-
- private:
- Ui::MainWindow_6_1 *ui;
- MyLineEdit *line_edit;
- protected:
- void keyPressEvent(QKeyEvent *event);
- };
- #endif // MAINWINDOW_6_1_H
- #include "mainwindow_6_1.h"
- #include "ui_mainwindow_6_1.h"
- #include "mylineedit.h"
- #include
- #include
- #include
-
- MainWindow_6_1::MainWindow_6_1(QWidget *parent)
- : QWidget(parent)
- , ui(new Ui::MainWindow_6_1)
- {
- ui->setupUi(this);
- line_edit=new MyLineEdit(this);
- line_edit->move(100,100);
- line_edit->installEventFilter(this);//在主窗口的lineedit控件安装事件过滤器,src6_2
-
- }
-
- MainWindow_6_1::~MainWindow_6_1()
- {
- delete ui;
- }
-
- bool MainWindow_6_1::eventFilter(QObject *obj, QEvent *event)//src_6_2事件过滤器
- {
- if(obj==line_edit)
- {
- if(event->type()==QEvent::KeyPress)
- {
- qDebug()<<tr("主窗口的事件过滤器触发");
- }
- }
- return QWidget::eventFilter(obj,event);
- }
-
- void MainWindow_6_1::keyPressEvent(QKeyEvent *event)
- {
- qDebug()<
currentDateTime().toString("yyyy-MM-dd HH:mm:ss.zzz")<<tr("主窗口的键盘事件触发,键盘按下"); - }
-