我是靠谱客的博主 热心水蜜桃,最近开发中收集的这篇文章主要介绍Qt使用notify函数响应事件,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

在最近的一个项目中,利用到了别人给的一个框架代码,但是短时间内无法深究其窗口间的层次关系,因此对不同窗口类的事件改写就很棘手,在大佬介绍下,采用了notificy函数,该函数可以捕获该程序的所有事件,因此我们可以通过debug信息获知该类窗口的事件。

具体实现如下:

在Qt中新建一个类
.h如下

#ifndef MYAPPLICATION_H
#define MYAPPLICATION_H
#include

class myApplication :public QApplication //此处需继承QApplication
{
public:
myApplication(int argc, char *argv[]);
protected:
virtual bool notify(QObject *obj, QEvent *event); //对该类重写notify事件
};

#endif // MYAPPLICATION_H
.cpp如下:

#include “myapplication.h”

myApplication::myApplication(int argc, char *argv[]):QApplication(argc, argv)
{

}

bool myApplication::notify(QObject *obj, QEvent *event)
{
if(event->type() == QMouseEvent::MouseButtonPress)//可以设置此处的event->type()来捕获不同类型的event事件
{
qDebug()<<PRETTY_FUNCTION<<obj<<event;

}
else if(event->type() == QEvent::NonClientAreaMouseButtonRelease)
{
    qDebug()<<__PRETTY_FUNCTION__<<obj<<event;//__FUNCTION__ 函数,提供类名和函数名称的输出
}

return QApplication::notify(obj,event);

}
main函数下,

#include “mainwindow.h”
#include
#include “myapplication.h”
int main(int argc, char *argv[])
{
myApplication a(argc, argv); //注意此处是用myApplication构造 不是QApplication
MainWindow w;
w.show();

return a.exec();

}

执行结果如下:

因此通过对事件的捕获,我们就得知了对窗口的事件,需要我们重写哪个类的事件函数。

最后

以上就是热心水蜜桃为你收集整理的Qt使用notify函数响应事件的全部内容,希望文章能够帮你解决Qt使用notify函数响应事件所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(26)

评论列表共有 0 条评论

立即
投稿
返回
顶部