如果尝试从另一个enum传递一个值或仅传递0以外的普通整数,则编译程序将报告一个错误。如果需要以非类型化方式将整数值强制转换为标志,则可以将显式QFlags构造程序用作强制转换操作符。
如果要为自己的enum类型使用QFlags,请使用Q_DECLARE_FLAGS()和Q_DECLARE_OPERATORS_for_FLAGS()。
示例:
class MyClass
{
public:
enum Option {
NoOptions = 0x0,
ShowTabs = 0x1,
ShowAll = 0x2,
SqueezeBlank = 0x4
};
Q_DECLARE_FLAGS(Options, Option)
...
};
Q_DECLARE_OPERATORS_FOR_FLAGS(MyClass::Options)
然后,可以使用MyClass::Options类型存储MyClass::Option值的组合。