查看完整版本: [-- 如何为QApplication对象安装事件过滤器 --]

QTCN开发网 -> Qt基础编程 -> 如何为QApplication对象安装事件过滤器 [打印本页] 登录 -> 注册 -> 回复主题 -> 发表主题

feixiangxtu 2011-05-25 16:00

如何为QApplication对象安装事件过滤器

如题!
int main(int argc, char *argv[])
{
    QApplication app(argc, argv);

    app.installEventFilter(QObject *);   QObject *????

    .......
}

dbzhang800 2011-05-25 16:27
引用楼主feixiangxtu于2011-05-25 16:00发表的 如何为QApplication对象安装事件过滤器 :
如题!
int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
.......

QApplication 也是QObject的派生类,只要你知道如何给其他QObject的派生类对象安装过滤器,就应该知道如何做了。

bloodenjoy 2011-05-25 17:39
不知道你为什么要为一个QApplication对象安装事件过滤器
一般的方法是是在他的构造函数里面添加 参数给this
如果在外面的话可能给QApplication对象
另外你添加这个后还要实作他的bool eventFilter(QObject *obj, QEvent *event);函数  在这里处理消息事件
bool Dialog::eventFilter(QObject *obj, QEvent *event)
{
    if (event->type() == QEvent::Paint)
    {
        QPaintEvent *paintEvent = static_cast<QPaintEvent *>(event);
        ///
        其他代码
   }
   else

    return QObject::eventFilter(obj, event);
  }
  return true;

我也刚学qt 不知道这些对你有用么

ingenious 2016-01-07 12:42

#include <QApplication>
#include "mainwindow.h"
#include<QDebug>
#include<QEvent>
#include<QKeyEvent>


//先写一个类,命名为MyObeject 继承与QObjectclass
myObject:public QObject
{
public:    
bool eventFilter (QObject *obj, QEvent *event) //重新实现此虚函数
   {        
if(event->type()==QEvent::KeyPress)      
{        
   QKeyEvent *key=static_cast<QKeyEvent *>(event);//将QEvent类型转变为子类QKeyEvent类型,才能使用子类的key()函数        
   if(key->key()==Qt::Key_F1)//如果按下的键是F1          
{              
qDebug() << "按下了F1键";  //打印出消息,这里只是为了测试            
   return true;          
}
    }      
  return QObject::eventFilter(obj,event);  
}
};
//在main函数调用installEventFilter()函数
int main(int argc, char *argv[])
{    
QApplication a(argc, argv);
    myObject *obj= new myObject;  
  a.installEventFilter(obj);


    MainWindow w;    w.show();
    return a.exec();
}

//希望可以帮助到新手


ewrest 2017-05-06 15:08
谢谢 很有帮助


查看完整版本: [-- 如何为QApplication对象安装事件过滤器 --] [-- top --]



Powered by phpwind v8.7 Code ©2003-2011 phpwind
Gzip disabled