讀QT5 7原始碼(五)QMetaEnum

2021-07-27 07:14:33 字數 2585 閱讀 6984

enum在qmetaobject中的分布:

qmetaenum   類用來管理對應的enum結構,方面查詢等操作,下面是它的定義

class q_core_export qmetaenum

const char *name() const;

bool isflag() const;

int keycount() const;

const char *key(int index) const;

int value(int index) const;

const char *scope() const;

int keytovalue(const char *key, bool *ok = q_nullptr) const;

const char* valuetokey(int value) const;

int keystovalue(const char * keys, bool *ok = q_nullptr) const;

qbytearray valuetokeys(int value) const;

inline const qmetaobject *enclosingmetaobject() const

inline bool isvalid() const

templatestatic qmetaenum fromtype()

private:

const qmetaobject *mobj;

uint handle;

friend struct qmetaobject;

};

const qmetaobject *mobj;  

uint handle;

所有的操作基於這兩個成員,hadnle 是該列舉節 相對整個結構的偏移量

1、const char *qmetaenum::

name()

const       返回列舉型別的名稱字串

const char *qmetaenum::name() const

2、int qmetaenum::

keycount()

const   返回key的數量

int qmetaenum::keycount() const

3、const char *qmetaenum::

key(int index) const   返回index索引的key的名稱字串

const char *qmetaenum::key(int index) const

4、int qmetaenum::

value

(int index) const    返回index索引的key的值

int qmetaenum::value(int index) const

5、 bool qmetaenum::

isflag()

const       是否使用標記

/*!

returns \c true if this enumerator is used as a flag; otherwise returns

false.

when used as flags, enumerators can be combined using the or

operator.

\sa keystovalue(), valuetokeys()

*/bool qmetaenum::isflag() const

6、const char *qmetaenum::

scope()

const  返回所屬類名

const char *qmetaenum::scope() const

7、int qmetaenum::

keytovalue

(const char *key, bool *ok) const  根據key名返回對應的值

int qmetaenum::keytovalue(const char *key, bool *ok) const

int count = mobj->d.data[handle + 2];

int data = mobj->d.data[handle + 3];

for (int i = 0; i < count; ++i)

}return -1;

}

8、const char* qmetaenum::

valuetokey

(int value) const  根據值返回key 名

const char* qmetaenum::valuetokey(int value) const

centos6 5下qt5 7原始碼安裝

1.前提,gcc公升級至4.8以上 3.解壓tar zxvf qt everywhere opensource src 5.7.0.tar.gz 4.重新命名mv qt everywhere opensource src 5.7.0 qt5.7 5.進入目錄cd qt5.7 6.配置.configu...

象棋實戰 基於QT5 7

第一天 總體架構 1.熟悉qt基礎函式 2.構建象棋整體框架 棋子的表示,走法,以及要實現的功能 人人,人機,網路等 3.使用qt繪製棋盤 a.繪畫棋盤 b.繪畫棋子 c.棋盤行列值和螢幕之間的畫素值之間進行切換 d.螢幕重繪 第二天 規則 1.初始化棋子 2.移動 3.象棋走棋規則 a.將 b.士...

樹莓派 Qt5 7交叉編譯

一 準備軟體 2.cross compile tools master.zip 3.gcc 4.7 linaro rpi gnueabihf.tbz 二 步驟 2.當掛載完成後,請進入cd mnt rasp pi rootfs usr lib arm linux gnueabihf 檢視兩個so檔案...