Event Filter doesnt work as expected
I tried to override the keypressevent for my lineEdit control using eventFiltering.
but when i run my application it doesnt do anything! i even set a break point inside the eventFiltering method , but i never get there!!?
This is my source codes :
MainWindow.h
Code:
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
namespace Ui {
class MainWindow;
}
{
Q_OBJECT
public:
explicit MainWindow
(QWidget *parent
= 0);
~MainWindow();
protected:
private:
Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H
MainWindow.cpp:
Code:
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "QMessageBox"
#include <QKeyEvent>
MainWindow
::MainWindow(QWidget *parent
) : ui(new Ui::MainWindow)
{
ui->setupUi(this);
}
{
if (sender == ui->lineEdit)
{
if(event
->type
()== QEvent::KeyPress) {
if( keyEvent->key() == Qt::Key_Control)
{
return true;
}else
{
return false;
}
}
}
return QWidget::eventFilter(sender,event
);
}
MainWindow::~MainWindow()
{
delete ui;
}
Re: Event Filter doesnt work as expected
From the friendly QObject::eventFilter() docs:
Quote:
Filters events if this object has been installed as an event filter for the watched object.
So, where have you installed this QObject as an event filter (QObject::installEventFilter())? You use this if you want to see all the events destined for another QObject before that object sees them.
If you want to see the key press events that make it to this QWidget then you want to reimplement QWidget::keyPressEvent().
If you want to see all events then reimplement QWidget::event().