Qt文档阅读笔记-Q_GADGET官方解析及实例
生活随笔
收集整理的這篇文章主要介紹了
Qt文档阅读笔记-Q_GADGET官方解析及实例
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Q_GADGET宏是輕量級的Q_OBJECT宏。使用這個宏無需繼承OBject類就能使用QMetaObject相關的特性(也就是元對象系統的特點如反射),同樣Q_GADGET也要是私有的。
Q_GADGET可以使用Q_ENUM,Q_PROPERTY,Q_INVOKABLE,但是不能使用信號與槽。
Q_GADGET使得類成員,staticMetaObject都可用。staticMetaObject是QMetaObject的類型,提供了訪問Q_ENUMS的功能。
?
?
下面是博主的小例子
使用Q_GADGET,訪問其中的Q_ENUMS
程序運行截圖如下:
源碼如下:
GadgetTest.h
#ifndef GADGETTEST_H #define GADGETTEST_H#include <QObject>class GadgetTest {Q_GADGET public:GadgetTest();enum Priority { High, Low, VeryHigh, VeryLow };enum Type{Zero, One, Two, Three};Q_ENUM(Priority)Q_ENUM(Type) };#endif // GADGETTEST_HGadgetTest.cpp
#include "GadgetTest.h"GadgetTest::GadgetTest() {}main.cpp
#include <QCoreApplication> #include <QDebug> #include <QMetaObject> #include <QMetaMethod> #include <QMetaEnum> #include <QMetaObject> #include "GadgetTest.h"int main(int argc, char *argv[]) {QCoreApplication a(argc, argv);int count = GadgetTest::staticMetaObject.enumeratorCount();for(int i = 0; i < count; i++){QMetaEnum en = GadgetTest::staticMetaObject.enumerator(i);int enCount = en.keyCount();for(int j = 0; j < enCount; j++){qDebug() << en.value(j);qDebug() << en.key(j);}qDebug() << "----------------華麗的分割線----------------";}return a.exec(); }源碼下載地址:
https://github.com/fengfanchen/Qt/tree/master/GADGET_Demo
?
總結
以上是生活随笔為你收集整理的Qt文档阅读笔记-Q_GADGET官方解析及实例的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Android逆向笔记-Unity3D逆
- 下一篇: Qt笔记-解决键盘事件不能正常响应(其他