主要是掌握Qt 中Q_FLAG, Q_ENUM这两处宏定义作用与影响.
QFlags类提供存储或组合枚举值的类型安全的方法。
QFlags 类是一个模板类,其中enum是枚举类型。在整个Qt中使用QFlags来存储枚举值的组合。
用于存储枚举值的OR组合的传统C ++方法是使用int或uint变量。这种方法的不便之处在于根本没有类型检查; 任何枚举值都可以与任何其他枚举值进行“ int或” ,并传递给带有或的函数uint。
Qt使用QFlags提供类型安全。
label - > setAlignment(Qt :: AlignLeft | Qt :: AlignTop);
这意味着Qt :: AlignmentFlag值或0的任何组合都是合法的:
如果您尝试从另一个枚举中传递值或仅传递0以外的普通整数,编译器将报告错误。
如果需要以无类型方式将整数值强制转换为标志,则可以使用显式QFlags构造函数作为强制转换运算符。
如果要将QFlags用于自己的枚举类型,请使用Q_DECLARE_FLAGS()和Q_DECLARE_OPERATORS_FOR_FLAGS()。
class MyClass
{
public:
Option{
NoOptions = 0x0 ,
ShowTabs = 0x1 ,
ShowAll = 0x2 ,
SqueezeBlank = 0x4