QEvent 子類化一例

2021-05-27 01:23:31 字數 1267 閱讀 5926

自定義乙個qevent應該很簡單:

class customevent : public qevent

};

不過傳給父類的type引數似乎有點讓人頭痛,因為用該事件的時候,一般都還要使用這個type的值。

讓type作為該類的靜態成員,應該是我們比較期待的:

class customevent : public qevent

};

這樣一來,使用(處理)事件時

if (event->type()==customevent::mytype)

不過呢,直接使用qevent::user+1 這種東西,無法避免type的重複。恩,要解決問題,需要使用:

int qevent::registereventtype ( int hint = -1 )

這樣一來,**變成:

class customevent : public qevent

};const qevent::type customevent::mytype = static_cast(qevent::registereventtype());

函式呼叫不能在類定義中初始化常量,只能放.cpp 檔案中了。

除了靜態的成員變數,我們還可以使用靜態的成員函式

class customevent : public qevent

customevent() : qevent(registeredtype())

};

如果我的customevent接受 type 引數,又該如何是好?

class customevent : public qevent

};

恩,還是用一堆 static 的靜態資料成員吧,大概類似於

// x. h

class customevent : public qevent

};qevent::type customevent::mytype1 = static_cast(qevent::registereventtype());

qevent::type customevent::mytype2 = static_cast(qevent::registereventtype());

qevent::type customevent::mytype3 = static_cast(qevent::registereventtype());

演算法優化一例

本文將以排序演算法中的插入排序為例,介紹優化演算法,編制高效程式的方法。人們通常用於排序手中橋牌的方法是一次考慮一張牌,將它插入到已經排序過的牌的適當位置中 時刻讓它們保持有序 在計算機實現中,我們需要將較大的元素移到右邊,為插入的元素準備空間,然後再在空位置上插入該元素。該演算法的通常的乙個實現如...

delegate 委託一例

using system using system.collections.generic using system.linq using system.text namespace consoletest public static void englishgreeting string snam...

資料合併一例

qs 在mssqlserver2000中乙個表中有兩條記錄 a,a,0,0,b,0,c,0 0,0,b,0,0,d,0,0 如何將這兩條記錄合併為 a,a,b,0,b,d,c,0 as sql05 建立測試表 create table id1 varchar 10 id2 varchar 10 id...