QFlags 類

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 QFlags:: Int

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 QFlags:: enum_type

用於枚舉模闆類型的 Typedef。

成員函數文檔編製

QFlags:: QFlags (const QFlags < T > & other )

構造副本為 other .

QFlags:: QFlags ( Enum flags )

構造 QFlags object storing the flags .

QFlags:: QFlags ( QFlags::Zero = Q_NULLPTR)

構造 QFlags object with no flags set. The parameter must be a literal 0 value.

QFlags:: QFlags ( QFlag flag )

構造 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:: QFlags ( std::initializer_list < Enum > flags )

構造 QFlags object initialized with all flags combined using the bitwise OR operator.

該函數在 Qt 5.4 引入。

另請參閱 operator|= () 和 operator| ().

QFlags < T > &QFlags:: setFlag ( Enum flag , bool on = true)

Sets the flag flag if on is true or unsets it if on is false 。返迴此對象的引用。

該函數在 Qt 5.7 引入。

bool QFlags:: testFlag ( Enum flag ) const

返迴 true 若標誌 flag 被設置,否則 false .

該函數在 Qt 4.2 引入。

QFlags::Int QFlags:: operator QFlags::Int () const

返迴值存儲在 QFlags 對象作為整數。

另請參閱 Int .

bool QFlags:: operator! () const

返迴 true if no flag is set (i.e., if the value stored by the QFlags object is 0); otherwise returns false .

QFlags < T > QFlags:: operator& ( int mask ) const

返迴 QFlags object containing the result of the bitwise AND operation on this object and mask .

另請參閱 operator&= (), operator| (), operator^ (),和 operator~ ().

QFlags < T > QFlags:: operator& ( uint mask ) const

這是重載函數。

QFlags < T > QFlags:: operator& ( Enum other ) const

這是重載函數。

QFlags < T > &QFlags:: operator&= ( int mask )

Performs a bitwise AND operation with mask and stores the result in this QFlags object. Returns a reference to this object.

另請參閱 operator& (), operator|= (),和 operator^= ().

QFlags < T > &QFlags:: operator&= ( uint mask )

這是重載函數。

QFlags < T > &QFlags:: operator&= ( Enum mask )

這是重載函數。

QFlags < T > &QFlags:: operator= (const QFlags < T > & other )

賦值 other 到此對象並返迴此對象的引用。

QFlags < T > QFlags:: operator^ ( QFlags < T > other ) const

返迴 QFlags object containing the result of the bitwise XOR operation on this object and other .

另請參閱 operator^= (), operator& (), operator| (),和 operator~ ().

QFlags < T > QFlags:: operator^ ( Enum other ) const

這是重載函數。

QFlags < T > &QFlags:: operator^= ( QFlags < T > other )

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 < T > &QFlags:: operator^= ( Enum other )

這是重載函數。

QFlags < T > QFlags:: operator| ( QFlags < T > other ) const

返迴 QFlags object containing the result of the bitwise OR operation on this object and other .

另請參閱 operator|= (), operator^ (), operator& (),和 operator~ ().

QFlags < T > QFlags:: operator| ( Enum other ) const

這是重載函數。

QFlags < T > &QFlags:: operator|= ( QFlags < T > other )

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 < T > &QFlags:: operator|= ( Enum other )

這是重載函數。

QFlags < T > QFlags:: operator~ () const

返迴 QFlags 對象包含此對象的按位取反。

另請參閱 operator& (), operator| (),和 operator^ ().

宏文檔編製

Q_DECLARE_FLAGS ( Flags , Enum )

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 ( Flags )

Q_DECLARE_OPERATORS_FOR_FLAGS() 宏聲明全局 operator|() 函數為 Flags , which is of type QFlags <T>.

QFlags 文檔編製瞭解細節。

另請參閱 Q_DECLARE_FLAGS ().