三十 自定義事件

2021-07-27 03:43:49 字數 2366 閱讀 7405

1、  阻塞型事件傳送:

事件傳送後需要等待事件處理完成

2、非阻塞型事件傳送:

事件傳送後立即返回

事件被傳送到事件佇列中等待處理

注意事項:

1、sendevent()中的事件物件的生命週期由qt程式管理,支援棧事件物件與堆事件物件的傳送

2、postevent()中的事件物件的生命週期由qt平台管理,只能傳送堆事件物件,事件被處理後由qt平台銷毀

#ifndef widget_h

#define widget_h

#include #include class widget : public qwidget;

#endif // widget_h

#include "widget.h"

:qwidget(parent)

//槽函式相當於是在事件處理函式內部呼叫的,槽函式執行完之前,事件處理函式未執行完畢,即當前事件物件正在被處理

void widget::onbuttonclicked()

void widget::testsendevent()

void widget::testpostevent()

bool widget::event(qevent* evt)

return qwidget::event(evt);

}

widget::~widget()

意圖自定義的事件類:

1、自定義的事件類必須繼承自qevent

2、自定義的事件類必須擁有全域性唯一的type值

3、程式中必須提供處理自定義事件物件的方法

步驟:1、將qevent作為父類繼承

2、指定全域性唯一的type值

class ***event : public qevent                           //自定義的事件類必須繼承自qevent類

;

3、處理自定義事件的常用方法

1)、給目標物件安裝事件過濾器,在eventfilter()函式中編寫自定義事件處理邏輯

2)、在目標物件類中重寫event(),在event()函式中編寫自定義事件的處理邏輯

事件的type值:

1、每個qt事件類都擁有全域性唯一的type值

2、自定義的事件類的type值需要自定義

3、自定義事件類使用qevent::user之後的值作為type值,qevent::user+ value

4、需要保證應用程式中的自定義事件類的type值:qevent::user + value全域性唯一

#ifndef _stringevent_h_

#define _stringevent_h_

#include #include class stringevent : public qevent //自定義的事件類必須繼承自qevent類;

#endif // _stringevent_h_

// stringevent.cpp

#include "stringevent.h"

stringevent::stringevent(qstring data) :qevent(type)

qstring stringevent::data()

#ifndef widget_h

#define widget_h

#include #include class widget : public qwidget;

#endif // widget_h

#include "widget.h"

#include "stringevent.h"

:qwidget(parent), m_edit(this)

//方法一: 重寫目標物件的event()函式

bool widget::event(qevent* evt)

return qwidget::event(evt);

} //方法二:通過事件過濾器

bool widget::eventfilter(qobject* obj,qevent* evt)

return qwidget::eventfilter(obj, evt); }

widget::~widget()

宣告:此文根據 狄泰學院唐老師的《qt實驗分析教程》創作

自定義事件

public event eventhandleropenprogress private void onopenprogress progresseventargs e if openprogress null openprogress this,e public class progressev...

自定義事件

簡單的自定義事件 首先定義乙個類來監聽客戶端事件,這裡我們監聽鍵盤的輸入。定義乙個委託。public delegate void userrequest object sender,eventargs e 前面的object用來傳遞事件的發生者,後面的eventargs用來傳遞事件的細節,現在暫時沒...

js自定義事件和jQuery自定義事件

1.簡述 js自定義事件是用來擴充套件dom元素的行為的,可以讓dom元素監聽自定義事件,並手動觸發,更加靈活地實現一些操作。jquery自定義事件使用場景更加廣泛一些,不僅限於dom監聽自定義事件,可以任意自定義事件並隨時觸發。用於實現觀察者模式,為大型專案解耦非常方便。2.js自定義事件,js可...