简介:Qt框架中的枚举(enum)和标志位(flag)是常用且强大的特性,用于在代码中定义一组常量。Q_ENUM, Q_FLAG等宏让这些枚举和标志位能在Qt元对象系统中注册,便于元编程和国际化。本文还将探讨如何通过Q_NAMESPACE, Q_ENUM_NS, Q_FLAG_NS宏管理命名空间下的枚举和标志位。 即刻调用文心一言能力 开通百度智能云...
1qDebug()<< MyEnum::High<< MyEnum::Low;//qDebug()可以直接打印出枚举类值的字符串名称2QMetaEnum m = QMetaEnum::fromType<MyEnum::Priority>();//since Qt5.53qDebug()<<"keyToValue:"<< m.keyToValue("VeryHigh");4qDebug()<<"valueToKey:"<<m.valueToKey(MyEnum::VeryHigh);5qDebu...
简单来讲,Qt还是使用一组宏命令来完成枚举量扩展功能的(正如Qt的其他核心机制一样),这些宏包括Q_ENUM,Q_FLAG,Q_ENUM_NS,Q_FLAG_NS,Q_DECLARE_FLAGS,Q_DECLARE_OPERATORS_FOR_FLAGS, 这些宏的实现原理和如何展开如何注册到Qt内核均不在本文的讲解范围,本文只讲应用。 Q_ENUM的使用 首先讲解最简单明了的宏Q_...
Qt中的枚举变量,Q_ENUM,Q_FLAG,Q_NAMESPACE,Q_ENUM_NS,Q_FLAG_NS以及其他 个人理解,借助元对象系统,有点像Java的注解,moc通过搜索特定的标记来生成特定的代码
};Q_ENUM_NS(Test_Enum_1)//Q_ENUM_NS宏将我们需要的枚举类型对象注册进} 2.类内注册 除此之外,还有另一种方法,那就是将枚举类型写入到用Q_OBJECT, Q_GADGET or Q_GADGET_EXPORT这三个宏之一标记的类内 需要注意的一点:Q_GADGET是Q_OBJECT宏的轻量化版本,用Q_GADGET意味着这个类不一定需要继承QObject...
Q_ENUM_NS(MyEnum) } class QmlType : public QObject { Q_OBJECT QML_ELEMENT QML_EXTENDED_NAMESPACE(MyNamespace) //拓展MyNamespace为QmlType的枚举 } 可在QML 中访问枚举: QmlType { property int i: QmlType.MyEnumerator // i = 10
Q_ENUM_NS(Test_Enum_1) //Q_ENUM_NS宏将我们需要的枚举类型对象注册进 } ``` ### 2.类内注册 除此之外,还有另一种方法,那就是将枚举类型写入到用Q_OBJECT, Q_GADGET or Q_GADGET_EXPORT这三个宏之一标记的类内 需要注意的一点:Q_GADGET是Q_OBJECT宏的轻量化版本,用Q_GADGET意味着这个类不一定需...
Q_NAMESPACE宏用于将QMetaObject功能添加到名称空间。Q_NAMESPACE可以有Q_CLASSINFO、Q_ENUM_NS、Q_FLAG_NS,但不能有Q_ENUM、Q_FLAG、Q_PROPERTY、Q_INVOKABLE、信号或槽函数。 Q_NAMESPACE_EXPORT(EXPORT_MACRO) 该宏的工作原理与Q_NAMESPACE宏完全相同。但是,在名称空间中定义的外部staticMetaObject变量是用提...
enum Router: URLRequestConvertible { static let baseURLString = "http://example.com" static let perPage = 50 case Search(query: String, page: Int) // MARK: URLRequestConvertible var URLRequest: NSURLRequest { let (path: String, parameters: [String: AnyObject]?) = { switch self { case...
typedefstruct_tagMESSAGE_MAP{UINT uMsg;//窗口消息IDUINT uCode;//通知消息IDUINT uID;//控件IDUINT uEndID;//最后一个控件IDUINT singStyle;//函数样式PWNDMSG pfn;//函数指针}MESSAGE_MAP; 3.定义函数样式的枚举类型:SingStyle enumSingStyle{sing_end=0,sing_vv,//void pfn();sing_v_wl,//void pfn...