使用事件過濾器處理自定義事件

#include <QApplication>
#include<QWidget>
#include<QObject>
#include <iostream>
using namespace std;


QEvent::Type t1=(QEvent::Type)QEvent::registerEventType(1333);
QEvent e1(t1); //使用 QEvent 的構造函數創建自定義事件

//t2 的值與 t1 重複,使用 registerEventType 會自動產生一個合法的值
QEvent::Type t2=(QEvent::Type)QEvent::registerEventType(1333);
QEvent e2(t2);


class A:public QWidget
{
public:
	bool event(QEvent* e)
	{
		if(e->type()==t1) {cout<<"AE"<<e->type()<<","; f1((QEvent*)e); return 1; }
		if(e->type()==t2) {cout<<"BE"<<e->type()<<","; f2((QEvent*)e); return 1; }
		return QWidget::event(e);
	} //event 結束
	void f1(QEvent *e)
	{
		cout<<"F1"<<endl;
	}
	void f2(QEvent *e)
	{
		cout<<"F2"<<endl;
	}
};

class B:public QObject
{
public:
	bool eventFilter(QObject *w, QEvent *e)
	{
		if(e->type()==t1){ cout<<"A"<<endl;return 0; }
		if(e->type()==t2){ cout<<"B"<&
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章