• 8034阅读
  • 4回复

[提问]如何为QApplication对象安装事件过滤器 [复制链接]

上一主题 下一主题
离线feixiangxtu
 

只看楼主 倒序阅读 楼主  发表于: 2011-05-25
如题!
int main(int argc, char *argv[])
{
    QApplication app(argc, argv);

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

    .......
}
离线dbzhang800

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

QApplication 也是QObject的派生类,只要你知道如何给其他QObject的派生类对象安装过滤器,就应该知道如何做了。
离线bloodenjoy
只看该作者 2楼 发表于: 2011-05-25
不知道你为什么要为一个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 不知道这些对你有用么
[ 此帖被bloodenjoy在2011-05-25 17:40重新编辑 ]
离线ingenious

只看该作者 3楼 发表于: 2016-01-07

#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();

}

//希望可以帮助到新手

4条评分好评度+1贡献值+1金钱+3威望+1
ewrest 好评度 +1 谢谢 很有帮助 2017-05-06
ewrest 贡献值 +1 谢谢 很有帮助 2017-05-06
ewrest 威望 +1 谢谢 很有帮助 2017-05-06
ewrest 金钱 +3 谢谢 很有帮助 2017-05-06
离线ewrest

只看该作者 4楼 发表于: 2017-05-06
谢谢 很有帮助
快速回复
限100 字节
 
上一个 下一个