QFlags Class

template <typename Enum> class QFlags

QFlags 클래스는 열거형 값의 OR 조합을 저장하는 유형 안전 방식을 제공합니다. 더 보기...

Header: #include <QFlags>
CMake: find_package(Qt6 REQUIRED COMPONENTS Core)
target_link_libraries(mytarget PRIVATE Qt6::Core)
qmake: QT += core

공용 타입

공용 함수

QFlags()
QFlags(Enum flags)
QFlags(QFlag flag)
QFlags(std::initializer_list<Enum> flags)
QFlags(const QFlags<T> &other)
QFlags<T> &setFlag(Enum flag, bool on = true)
(since 6.2) bool testAnyFlag(Enum flag) const
(since 6.2) bool testAnyFlags(QFlags<T> flags) const
bool testFlag(Enum flag) const
(since 6.2) bool testFlags(QFlags<T> flags) const
(since 6.2) QFlags<T>::Int toInt() const
QFlags<T>::Int operator QFlags<T>::Int() const
bool operator!() const
QFlags<T> operator&(int mask) const
QFlags<T> operator&(Enum mask) const
(since 6.2) QFlags<T> operator&(QFlags<T> mask) const
QFlags<T> operator&(uint mask) const
QFlags<T> &operator&=(int mask)
QFlags<T> &operator&=(Enum mask)
(since 6.2) QFlags<T> &operator&=(QFlags<T> mask)
QFlags<T> &operator&=(uint mask)
int &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

정적 공용 멤버

(since 6.2) QFlags<T> fromInt(QFlags<T>::Int i)
(since 6.2) size_t qHash(QFlags<Enum> key, size_t seed = 0)

매크로

상세 설명

QFlags<Enum> 클래스는 템플릿 클래스이며, 여기서 Enum은 열거형입니다. QFlags는 열거형 값의 조합을 저장하기 위해 Qt 전체에서 사용됩니다.

열거형 값의 OR 조합을 저장하는 전통적인 C++ 접근 방식은 int 또는 uint 변수를 사용하는 것입니다. 이 접근법의 불편한 점은 타입 검사가 전혀 없다는 것입니다. 어떤 열거형 값이라도 다른 열거형 값과 OR할 수 있으며 int 또는 uint 을 취하는 함수에 전달할 수 있습니다.

Qt는 QFlags를 사용하여 타입 안전을 제공합니다. 예를 들어 Qt::Alignment 유형은 단순히 QFlags<Qt::AlignmentFlag>에 대한 typedef입니다. QLabel::setAlignment()는 Qt::Alignment 매개변수를 받는데, 이는 Qt::AlignmentFlag 값이나 { } 의 모든 조합이 합법적임을 의미합니다:

label->setAlignment(Qt::AlignLeft | Qt::AlignTop);
label->setAlignment({ });

다른 열거형의 값이나 0이 아닌 일반 정수를 전달하려고 하면 컴파일러가 오류를 보고합니다. 정수 값을 타입이 지정되지 않은 방식으로 플래그에 형 변환해야 하는 경우 명시적 QFlags 생성자를 형 변환 연산자로 사용할 수 있습니다.

자체 열거형에 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 값의 조합을 저장할 수 있습니다.

플래그 및 메타 객체 시스템

Q_DECLARE_FLAGS() 매크로는 메타 객체 시스템에 플래그를 노출하지 않으므로 Qt 스크립트에서 사용하거나 Qt Widgets Designer 에서 편집할 수 없습니다. 이러한 용도로 플래그를 사용하려면 Q_FLAG() 매크로를 사용해야 합니다:

Q_FLAG(Options)

명명 규칙

열거형과 관련 QFlags 유형에 대한 합리적인 명명 규칙은 열거형에 단수 이름(예: Option)을 지정하고 QFlags 유형에 복수 이름(예: Options)을 지정하는 것입니다. 단수 이름(예: Alignment)이 필요한 경우 열거형 유형에 Flag 을 접미사로 사용할 수 있습니다(예: AlignmentFlag).

QFlag참조하세요 .

멤버 유형 문서

QFlags::Int

저장 및 암시적 변환에 사용되는 정수 유형에 대한 Typedef. 열거형의 기본 유형이 서명된 유형인지 서명되지 않은 유형인지에 따라 int 또는 unsigned int 중 하나입니다.

QFlags::enum_type

열거형 템플릿 유형은 Typedef를 사용합니다.

멤버 함수 문서

[constexpr noexcept] QFlags::QFlags()

플래그가 설정되지 않은 QFlags 객체를 생성합니다.

[constexpr noexcept] QFlags::QFlags(Enum flags)

flags 을 저장하는 QFlags 객체를 생성합니다.

[constexpr noexcept] QFlags::QFlags(QFlag flag)

정수 flag 로 초기화된 QFlags 객체를 생성합니다.

QFlag 유형은 헬퍼 유형입니다. 여기서 int 대신 이 형을 사용하면 임의의 열거형 값을 QFlags로 캐스팅할 수 없지만 유형이 지정되지 않은 열거형 값(즉, int 값)은 캐스팅할 수 있습니다.

[constexpr noexcept] QFlags::QFlags(std::initializer_list<Enum> flags)

비트 OR 연산자를 사용하여 flags 을 모두 결합하여 초기화된 QFlags 객체를 구축합니다.

operator|=() 및 operator|()도 참조하세요 .

[default] QFlags::QFlags(const QFlags<T> &other)

other 의 복사본을 생성합니다.

[static constexpr noexcept, since 6.2] QFlags<T> QFlags::fromInt(QFlags<T>::Int i)

정수 값 i 을 나타내는 QFlags 객체를 구축합니다.

이 함수는 Qt 6.2에 도입되었습니다.

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

ontrue 인 경우 flag 플래그를 설정하고 onfalse 인 경우 설정을 해제합니다. 이 객체에 대한 참조를 반환합니다.

[constexpr noexcept, since 6.2] bool QFlags::testAnyFlag(Enum flag) const

flag 에 설정된 플래그가 이 플래그 객체에도 설정되어 있으면 true 을 반환하고, 그렇지 않으면 false 을 반환합니다. flag 에 설정된 플래그가 없으면, 반환값은 항상 false 입니다.

이 함수는 Qt 6.2에 도입되었습니다.

testFlag()도 참조하십시오 .

[constexpr noexcept, since 6.2] bool QFlags::testAnyFlags(QFlags<T> flags) const

flags 에 설정된 플래그가 이 플래그 객체에도 설정되어 있으면 true 을 반환하고, 그렇지 않으면 false 을 반환합니다. flags 에 설정된 플래그가 없으면, 반환값은 항상 false 입니다.

이 함수는 Qt 6.2에 도입되었습니다.

testFlags()도 참조하십시오 .

[constexpr noexcept] bool QFlags::testFlag(Enum flag) const

flag 플래그가 설정되어 있으면 true 를 반환하고, 그렇지 않으면 false 를 반환합니다.

참고: flag 에 1로 설정된 비트가 여러 개 포함되어 있는 경우(예: 다른 열거자의 비트-OR과 동일한 열거자인 경우) 이 함수는 모든 비트가 이 플래그 객체에 설정된 경우에만 true 을 반환합니다. 반면 flag 에 1로 설정된 비트가 없는 경우(즉, 정수로서의 값이 0인 경우), 이 함수는 이 플래그 객체에도 1로 설정된 비트가 없는 경우에만 true 을 반환합니다.

testAnyFlag()도 참조하세요 .

[constexpr noexcept, since 6.2] bool QFlags::testFlags(QFlags<T> flags) const

이 플래그 객체가 주어진 flags 과 일치하면 true 을 반환합니다.

flags 에 설정된 플래그가 있는 경우, flags 에 설정된 모든 플래그가 이 플래그 객체에도 설정되어 있으면 이 플래그 객체는 정확하게 일치합니다. 그렇지 않으면 flags 에 설정된 플래그가 없는 경우, 이 플래그 객체는 이 플래그 객체에도 설정된 플래그가 없는 경우에만 일치합니다.

이 함수는 Qt 6.2에 도입되었습니다.

testAnyFlags()도 참조하십시오 .

[constexpr noexcept, since 6.2] QFlags<T>::Int QFlags::toInt() const

QFlags 객체에 저장된 값을 정수로 반환합니다. 반환된 정수는 열거형의 기본 유형이 부호화되었는지 또는 부호화되지 않았는지에 따라 부호화되거나 부호화되지 않을 수 있습니다.

이 함수는 Qt 6.2에 도입되었습니다.

Int참조하십시오 .

[constexpr noexcept] QFlags<T>::Int QFlags::operator QFlags<T>::Int() const

QFlags 객체에 저장된 값을 정수로 반환합니다.

Int도 참조하세요 .

[constexpr noexcept] bool QFlags::operator!() const

플래그가 설정되지 않은 경우(즉, QFlags 객체에 저장된 값이 0인 경우) true 을 반환하고, 그렇지 않으면 false 을 반환합니다.

[constexpr noexcept] QFlags<T> QFlags::operator&(int mask) const

이 객체와 mask 에 대한 비트 AND 연산 결과가 포함된 QFlags 객체를 반환합니다.

operator&=(), operator|(), operator^() 및 operator~()도 참조하세요 .

[constexpr noexcept] QFlags<T> QFlags::operator&(Enum mask) const

과부하가 걸린 기능입니다.

[constexpr noexcept, since 6.2] QFlags<T> QFlags::operator&(QFlags<T> mask) const

이 함수는 오버로드된 함수입니다.

이 함수는 Qt 6.2에 도입되었습니다.

[constexpr noexcept] QFlags<T> QFlags::operator&(uint mask) const

과부하가 걸린 기능입니다.

[constexpr noexcept] QFlags<T> &QFlags::operator&=(int mask)

mask 로 비트 AND 연산을 수행하고 결과를 이 QFlags 객체에 저장합니다. 이 객체에 대한 참조를 반환합니다.

operator&(), operator|=() 및 operator^=()도 참조하세요 .

[constexpr noexcept] QFlags<T> &QFlags::operator&=(Enum mask)

과부하가 걸린 기능입니다.

[constexpr noexcept, since 6.2] QFlags<T> &QFlags::operator&=(QFlags<T> mask)

이 함수는 오버로드된 함수입니다.

이 함수는 Qt 6.2에 도입되었습니다.

[constexpr noexcept] QFlags<T> &QFlags::operator&=(uint mask)

과부하가 걸린 기능입니다.

[default] int &QFlags::operator=(const QFlags<T> &other)

이 객체에 other 을 할당하고 이 객체에 대한 참조를 반환합니다.

[constexpr noexcept] QFlags<T> QFlags::operator^(QFlags<T> other) const

이 객체와 other 에 대한 비트별 XOR 연산 결과가 포함된 QFlags 객체를 반환합니다.

operator^=(), operator&(), operator|() 및 operator~()도 참조하세요 .

[constexpr noexcept] QFlags<T> QFlags::operator^(Enum other) const

과부하가 걸린 기능입니다.

[constexpr noexcept] QFlags<T> &QFlags::operator^=(QFlags<T> other)

other 로 비트 단위 XOR 연산을 수행하고 결과를 이 QFlags 객체에 저장합니다. 이 객체에 대한 참조를 반환합니다.

operator^(), operator&=() 및 operator|=()도 참조하세요 .

[constexpr noexcept] QFlags<T> &QFlags::operator^=(Enum other)

과부하가 걸린 기능입니다.

[constexpr noexcept] QFlags<T> QFlags::operator|(QFlags<T> other) const

이 객체와 other 에 대한 비트 단위 OR 연산 결과가 포함된 QFlags 객체를 반환합니다.

operator|=(), operator^(), operator&() 및 operator~()도 참조하세요 .

[constexpr noexcept] QFlags<T> QFlags::operator|(Enum other) const

과부하가 걸린 기능입니다.

[constexpr noexcept] QFlags<T> &QFlags::operator|=(QFlags<T> other)

other 로 비트 단위 OR 연산을 수행하고 결과를 이 QFlags 객체에 저장합니다. 이 객체에 대한 참조를 반환합니다.

operator|(), operator&=() 및 operator^=()도 참조하세요 .

[constexpr noexcept] QFlags<T> &QFlags::operator|=(Enum other)

과부하가 걸린 기능입니다.

[constexpr noexcept] QFlags<T> QFlags::operator~() const

이 객체의 비트 단위 부정이 포함된 QFlags 객체를 반환합니다.

operator&(), operator|() 및 operator^()도 참조하세요 .

관련 비회원

[constexpr noexcept, since 6.2] template <typename Enum> size_t qHash(QFlags<Enum> key, size_t seed = 0)

seed 을 사용하여 key 의 해시값을 반환합니다.

이 함수는 Qt 6.2에 도입되었습니다.

매크로 문서

Q_DECLARE_FLAGS(Flags, Enum)

Q_DECLARE_FLAGS() 매크로는 다음과 같이 확장됩니다.

typedef QFlags<Enum> Flags;

Enum 는 기존 열거형 타입의 이름이고 FlagsQFlags<Enum> typedef의 이름입니다.

자세한 내용은 QFlags 문서를 참조하세요.

Q_DECLARE_OPERATORS_FOR_FLAGS()도 참조하세요 .

Q_DECLARE_OPERATORS_FOR_FLAGS(Flags)

Q_DECLARE_OPERATORS_FOR_FLAGS() 매크로는 Flags 에 대한 글로벌 operator|() 함수를 선언하며, 이는 QFlags<T> 유형입니다.

자세한 내용은 QFlags 설명서를 참조하십시오.

Q_DECLARE_FLAGS()도 참조하세요 .

© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.