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可...