1. 程式人生 > >繼承QEvent類實現自定義事件

繼承QEvent類實現自定義事件

1.繼承自QEvent類的實現

.h檔案

#ifndef REFRESHDATAEVENT_H
#define REFRESHDATAEVENT_H

#include <QEvent>

class RefreshDataEvent:public QEvent
{
public:
    RefreshDataEvent();

public:
     static const Type eventType;
};

#endif // REFRESHDATAEVENT_H

cpp檔案

#include "refreshdataevent.h"

const QEvent::Type RefreshDataEvent::eventType =
        (QEvent::Type)QEvent::registerEventType(QEvent::User + 101);

RefreshDataEvent::RefreshDataEvent()
    :QEvent(eventType)
{
}

QEvent::Type不能重複,QEvent::Type是Qt中的列舉型別,Qt定義了一大堆的庫事件型別常數值,當然也允許使用者自定義自己的事件型別值,但是自定義的值應大於1000(QEvent::User),且小於65535(QEvent::MaxUser).

可以在建構函式中加入引數以實現引數傳遞。

2.傳送事件

RefreshDataEvent *refreshDataEvent = new RefreshDataEvent;
qApp->postEvent(QObject *receiver, refreshDataEvent);

傳送事件有兩個函式可用,分別是sendEvent和postEvent,兩者的區別是sendEvent是同步的,postEvent是非同步的。

3.處理事件

過載函式

void QObject::customEvent ( QEvent * event )
void Widget::customEvent(QEvent *event)
{
    if(event->type() == RefreshDataEvent::eventType)
    {
        //do something
    }
}
如果通過事件傳遞了引數,那麼需要把event變數型別轉換,
RefreshDataEvent *revent = (RefreshDataEvent *)event;

這樣可以通過revent訪問其變量了。

相關推薦

繼承QEvent實現定義事件

1.繼承自QEvent類的實現.h檔案#ifndef REFRESHDATAEVENT_H #define REFRESHDATAEVENT_H #include <QEvent> class RefreshDataEvent:public QEvent {

ThinkPHP5 0 控制器繼承定義

                Tp5的類名字是很坑的。如果是找不到類,建議從命名著手。。。 繼承系統控制器基類:

c# 實現定義事件訪問器 和 實現介面事件

event EventHandler IDrawingObject.OnDraw { add { lock (PreDrawEvent) {

TypeScript 總實現定義事件(Event)

TypeScript有更好的面向物件性,實現事件只要繼承一個類EventEmitter 定義引發事件 //引入EventEmi

匿名型與Select方法實現定義對象插入局部表結構中

aso 直接 菜單 ember new order ber 構建 als 在提取局部表結構數據時,通過Select選取需要的字段,如下句,此時其實產生了一個不用於_menuMan的原新數據類型new { c.SYS_COMMANDS_ID,c.TXT_COMMANDTITL

Java原始碼分析——Class、ClassLoader解析(三) 載入器、實現定義載入器

    在這個系列的第一篇章就講解了Class類的獲取以及載入過程,但是並沒有提及具體的載入過程,在java中,載入一個類是通過ClassLoader類來執行的,也就是類載入器完成。java中所有的類,都必須載入進jvm中才能執行,這個載入的意思是

實現定義Lock

Java 9併發程式設計指南 目錄 實現自定義Lock類 準備工作 實現過程 工作原理 擴充套件學習 更多關注 鎖是Java併發API提供的基本同步機制之一,每次只有一個執行緒可以執行程式碼塊,因此用來保護程式碼的關鍵部分。鎖機

Java資料結構-陣列解析及封裝定義陣列實現

概念: 陣列是Java資料結構中最基本的資料,是儲存 一組長度固定的 同資料型別的集合。 優點: 插入快:對於無序陣列,只需要在陣列末尾增加資料即可。但對於有序陣列,需要查詢到固定的位置,再插入資料,相對無序陣列 結構簡單 缺點: 根據元素值查

Thinkphp5.0.18最高效的實現定義的自動載入方式

今天看了下,tp5的原始碼。發現自定義類庫的載入方式 是有順序的。分別是按對映方式 psr4 psr0,其中最高效的,順序最前的當然是對映方式。 我貼出原始碼,大家看下。 private static function findFile($class) { //echo

定製併發(十一)實現定義的原子物件

宣告:本文是《 Java 7 Concurrency Cookbook 》的第七章,作者: Javier Fernández González     譯者:許巧輝 校對:方騰飛 實現你自己的原子(atomic)物件 Java版本5中引入原子變數,並提供對單個變數的原子操作。當一個執行緒在原子

springmvc在處理請求過程中出現異常信息交由異常處理器進行處理,自定義異常處理器可以實現一個系統的異常處理邏輯。為了區別不同的異常通常根據異常自定義異常,這裏我們創建一個自定義系統異常,如果controller、service、dao拋出此類異常說明是系統預期處理的異常信息。

ansi req -type this spring 進行 name ext code springmvc在處理請求過程中出現異常信息交由異常處理器進行處理,自定義異常處理器可以實現一個系統的異常處理邏輯。 1.1 異常處理思路 系統中異常包括兩類:預期異常和運行時異常Ru

AsyncTask解析(下)——實現定義AsyncTask網路傳輸工具封裝

在上文: AsyncTask解析(上)——原理分析與超簡單demo實現中已經對AsyncTask的實現原理以及原始碼流程進行了一定的分析,相信大家已經基本熟悉了AsyncTask內部實現網路傳輸的呼叫順序以及過程細節,最後還寫出了一個比較簡單的Demo實踐,十分簡單易懂相信

thinkphp5實現定義分頁

為什麼修改系統自帶樣式?thinnkphp5系統自帶的樣式過於簡單,只是把頁數和點選某頁跳轉功能。當我們也是較多,想跳轉到具體的某頁都只能一頁一頁的跳轉。修改系統檔案需要做什麼準備?找到該目錄thinkphp5/framework/library/think/paginato

spring Aspect 實現定義註解的日誌記錄,有時候註解不起作用的原因分析

使用只要在controller的method上加上@ActionLog(actionGroup = "freeorder",actionType = "update",actionDesc = "操作",insertDb = true)其中insertDb 代表是否插入資料

js遮蔽滑鼠右鍵預設事件實現定義選單

2017-12-18日,2017年即將結束的日子裡。 公司做了一個專案,主要難點在於實現公司組織架構圖上,何謂組織架構圖,如下便是: 這裡的每個節點都有相應的右鍵選單,說白了就跟你用xmind的體

C++資料結構與STL--雙向迴圈連結串列(實現定義iterator

class dLinkList {private:node<T> *head;  //頭節點size_t length; //連結串列長度void dInsert(node<T> *curr,T val)  //插入的輔助函式,把新節點插入curr前 {node<T>* t

一個金融定義View,教大家如何實現股票軟體中的折線圖

今日科技快訊北京證監局近日釋出通告,責令樂視網前任董事長賈躍亭於2017年12月31日前回國,切

iOS_利用IBInspectable與IB_DESIGNABLE實現定義在Storyboad並動態展示設定效果

今天無意get到一個新的開發技能(蘋果自帶的SDK有提供),可以讓自定義的View在Storyboad或者Xib看到自己在自定義View.h新增的自定義屬性,並且對屬性進行引數賦值後動態重新整理檢視效果。 先囉嗦一下,自己在get這個技能之前經常需要將自定義View在Xib

通過c# 實現定義屬性改變觸發定義事件 ,理解定義事件及其觸發過程

以下說明可解釋自定義的事件的自定義觸發過程: 直接上程式碼,內含說明(介面是兩個文字框textbox1,textbox2,和一個button1,介面的Load事件,button的click事件) Form1 類(呼叫者端) using System; using

ALV通過F4事件實現定義搜尋幫助F4

ALV通過參考可以直接獲取表中搜索幫助,但是表中欄位沒有搜尋幫助或者不合要求就需要通過F4事件完成了。 1、定義OOALV類CLASS lcl_event_receiver DEFINITION D