The QFlags class provides a type-safe way of storing OR-combinations of enum values. 更多...
| 头: | #include <QFlags> | 
| qmake: | QT += core | 
| typedef | Int | 
| typedef | enum_type | 
| QFlags (const QFlags<T> & other ) | |
| QFlags (Enum flags ) | |
| QFlags ( QFlags::Zero = Q_NULLPTR) | |
| QFlags (QFlag flag ) | |
| QFlags (std::initializer_list<Enum> flags ) | |
| QFlags<T> & | setFlag (Enum flag , bool on = true) | 
| bool | testFlag (Enum flag ) const | 
| QFlags::Int | operator QFlags::Int () const | 
| bool | operator! () const | 
| QFlags<T> | operator& (int mask ) const | 
| QFlags<T> | operator& (uint mask ) const | 
| QFlags<T> | operator& (Enum other ) const | 
| QFlags<T> & | operator&= (int mask ) | 
| QFlags<T> & | operator&= (uint mask ) | 
| QFlags<T> & | operator&= (Enum mask ) | 
| QFlags<T> & | operator= (const QFlags<T> & other ) | 
| QFlags<T> | operator^ (QFlags<T> other ) const | 
| QFlags<T> | operator^ (Enum other ) const | 
| QFlags<T> & | operator^= (QFlags<T> other ) | 
| QFlags<T> & | operator^= (Enum other ) | 
| QFlags<T> | operator| (QFlags<T> other ) const | 
| QFlags<T> | operator| (Enum other ) const | 
| QFlags<T> & | operator|= (QFlags<T> other ) | 
| QFlags<T> & | operator|= (Enum other ) | 
| QFlags<T> | operator~ () const | 
| Q_DECLARE_FLAGS ( Flags , Enum ) | |
| Q_DECLARE_OPERATORS_FOR_FLAGS ( Flags ) | 
The QFlags class provides a type-safe way of storing OR-combinations of enum values.
The QFlags <Enum> class is a template class, where Enum is an enum type. QFlags is used throughout Qt for storing combinations of enum values.
						传统 C++ 存储枚举值 OR 组合的方式是使用
						
int
						
						or
						
uint
						
						variable. The inconvenience with this approach is that there's no type checking at all; any enum value can be OR'd with any other enum value and passed on to a function that takes an
						
int
						
						or
						
uint
						
						.
					
Qt 使用 QFlags to provide type safety. For example, the Qt::Alignment type is simply a typedef for QFlags < Qt::AlignmentFlag >. QLabel::setAlignment () takes a Qt::Alignment parameter, which means that any combination of Qt::AlignmentFlag values, or 0, is legal:
label->setAlignment(Qt::AlignLeft | Qt::AlignTop);
If you try to pass a value from another enum or just a plain integer other than 0, the compiler will report an error. If you need to cast integer values to flags in a untyped fashion, you can use the explicit QFlags constructor as cast operator.
If you want to use QFlags for your own enum types, use the 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)
						You can then use the
						
MyClass::Options
						
						type to store combinations of
						
MyClass::Option
						
						值。
					
The Q_DECLARE_FLAGS () macro does not expose the flags to the meta-object system, so they cannot be used by Qt Script or edited in Qt Designer. To make the flags available for these purposes, the Q_FLAG () macro must be used:
Q_FLAG(Options)
						A sensible naming convention for enum types and associated
						
							QFlags
						
						types is to give a singular name to the enum type (e.g.,
						
选项
						
						) and a plural name to the
						
							QFlags
						
						type (e.g.,
						
选项
						
						). When a singular name is desired for the
						
							QFlags
						
						type (e.g.,
						
Alignment
						
						), you can use
						
Flag
						
						as the suffix for the enum type (e.g.,
						
AlignmentFlag
						
						).
					
另请参阅 QFlag .
						Typedef for the integer type used for storage as well as for implicit conversion. Either
						
int
						
						or
						
无符号 int
						
						, depending on whether the enum's underlying type is signed or unsigned.
					
该 typedef 在 Qt 5.0 引入。
用于枚举模板类型的 Typedef。
构造副本为 other .
构造 QFlags object storing the flags .
构造 QFlags object with no flags set. The parameter must be a literal 0 value.
构造 QFlags object initialized with the integer flag .
						The
						
							QFlag
						
						type is a helper type. By using it here instead of
						
int
						
						, we effectively ensure that arbitrary enum values cannot be cast to a
						
							QFlags
						
						, whereas untyped enum values (i.e.,
						
int
						
						values) can.
					
构造 QFlags object initialized with all flags combined using the bitwise OR operator.
该函数在 Qt 5.4 引入。
另请参阅 operator|= () 和 operator| ().
						Sets the flag
						
							flag
						
						if
						
							on
						
						is
						
true
						
						or unsets it if
						
							on
						
						is
						
false
						
						。返回此对象的引用。
					
该函数在 Qt 5.7 引入。
						返回
						
true
						
						若标志
						
							flag
						
						被设置,否则
						
false
						
						.
					
该函数在 Qt 4.2 引入。
返回值存储在 QFlags 对象作为整数。
另请参阅 Int .
						返回
						
true
						
						if no flag is set (i.e., if the value stored by the
						
							QFlags
						
						object is 0); otherwise returns
						
false
						
						.
					
返回 QFlags object containing the result of the bitwise AND operation on this object and mask .
另请参阅 operator&= (), operator| (), operator^ (),和 operator~ ().
这是重载函数。
这是重载函数。
Performs a bitwise AND operation with mask and stores the result in this QFlags object. Returns a reference to this object.
另请参阅 operator& (), operator|= (),和 operator^= ().
这是重载函数。
这是重载函数。
赋值 other 到此对象并返回此对象的引用。
返回 QFlags object containing the result of the bitwise XOR operation on this object and other .
另请参阅 operator^= (), operator& (), operator| (),和 operator~ ().
这是重载函数。
Performs a bitwise XOR operation with other and stores the result in this QFlags object. Returns a reference to this object.
另请参阅 operator^ (), operator&= (),和 operator|= ().
这是重载函数。
返回 QFlags object containing the result of the bitwise OR operation on this object and other .
另请参阅 operator|= (), operator^ (), operator& (),和 operator~ ().
这是重载函数。
Performs a bitwise OR operation with other and stores the result in this QFlags object. Returns a reference to this object.
另请参阅 operator| (), operator&= (),和 operator^= ().
这是重载函数。
返回 QFlags 对象包含此对象的按位取反。
另请参阅 operator& (), operator| (),和 operator^ ().
The Q_DECLARE_FLAGS() macro expands to
typedef QFlags<Enum> Flags;
Enum is the name of an existing enum type, whereas Flags is the name of the QFlags < Enum > typedef.
见 QFlags 文档编制了解细节。
另请参阅 Q_DECLARE_OPERATORS_FOR_FLAGS ().
						Q_DECLARE_OPERATORS_FOR_FLAGS() 宏声明全局
						
operator|()
						
						函数为
						
							Flags
						
						, which is of type
						
							QFlags
						
						<T>.
					
见 QFlags 文档编制了解细节。
另请参阅 Q_DECLARE_FLAGS ().