QT里关于eventFilter例子为何不能执行,请指教
用的qt4.8,qt creater2.4.1
源码如下:
#include <QMainWindow>
class MainWindow : public QMainWindow
{
public:
MainWindow();
protected:
bool eventFilter(QObject *obj, QEvent *ev);
private:
QTextEdit *textEdit;
};
MainWindow::MainWindow()
{
textEdit = new QTextEdit;
setCentralWidget(textEdit);
textEdit->installEventFilter(this);
}
bool MainWindow::eventFilter(QObject *obj, QEvent *event)
{
if (obj == textEdit) {
if (event->type() == QEvent::KeyPress) {
QKeyEvent *keyEvent = static_cast<QKeyEvent*>(event);
qDebug() << "Ate key press" << keyEvent->key();
return true;
} else {
return false;
}
} else {
// pass the event on to the parent class
return QMainWindow::eventFilter(obj, event);
}
}
源码如下:
#include <QMainWindow>
class MainWindow : public QMainWindow
{
public:
MainWindow();
protected:
bool eventFilter(QObject *obj, QEvent *ev);
private:
QTextEdit *textEdit;
};
MainWindow::MainWindow()
{
textEdit = new QTextEdit;
setCentralWidget(textEdit);
textEdit->installEventFilter(this);
}
bool MainWindow::eventFilter(QObject *obj, QEvent *event)
{
if (obj == textEdit) {
if (event->type() == QEvent::KeyPress) {
QKeyEvent *keyEvent = static_cast<QKeyEvent*>(event);
qDebug() << "Ate key press" << keyEvent->key();
return true;
} else {
return false;
}
} else {
// pass the event on to the parent class
return QMainWindow::eventFilter(obj, event);
}
}
...全文
相关推荐
QT EventFilter事件过滤器样例(无bug)
安装鼠标点击事件、键盘输入事件的过滤器,输出相关信息到状态栏
深入理解Qt中的EventFilter机制及应用
在Qt中,事件循环是处理事件的基础设施。它是持续运行的循环,等待并分发事件直到应用程序终止。主要涉及两个关键函数:启动事件循环,处理事件。事件循环确保应用程序可以响应用户输入和其他事件,如定时器到期或网络数据到达。自定义事件处理的需求通常在以下几种情况下出现:需要对多个控件应用统一的事件处理逻辑:在大型应用中,多个控件可能需要响应相同的事件,如果为每个控件单独编写相同的事件处理代码,会造成代码的重复和难以维护。需要在事件传递之前或之后修改事件属性。
QT当中的connect+eventFilter函数全解
【1】 connect函数举例 【2】Q_SLOTS 【3】Q_SLOT 【4】Q_SIGNALS 【5】Q_SIGNAL 【6】Q_SET_OBJECT_NAME(Object) 【7】Q_OBJECT 【8】Q_GADGET 【9】Q_EMIT 【10】事件过滤器eventFilte函数
Qt EventFilter 事件过滤器 及传递 鼠标键盘事件捕捉
Qt EventFilter 事件过滤器 及传递 鼠标键盘事件捕捉; https://blog.csdn.net/q610098308/article/details/126302939
EventFilter
qt eventfilter演示


