@QFlag链接到此处

QFlag 处理 Python Enum 的变体,Flag 类。

请勿将其与 Qt 的 QFlags 概念混淆。Python 不使用该概念,它有自己的类层次结构。有关更多详细信息,请参阅Python enum 文档

示例链接到此处

from enum import Flag, auto

from PySide6.QtCore import QFlag, QObject

class Demo(QObject):

    @QFlag
    class Color(Flag):
        RED = auto()
        BLUE = auto()
        GREEN = auto()
        WHITE = RED | BLUE | GREEN

有关 Qt 标志的详细信息:链接到此处

Qt 标志和 Python 标志之间存在一些细微差别。例如,在 Qt 中,我们有以下声明

enum    QtGui::RenderHint { Antialiasing, TextAntialiasing, SmoothPixmapTransform,
                            HighQualityAntialiasing, NonCosmeticDefaultPen }
flags   QtGui::RenderHints

等效的 Python 表示方法如下

@QFlag
class RenderHints(enum.Flag)
    Antialiasing = auto()
    TextAntialiasing = auto()
    SmoothPixmapTransform = auto()
    HighQualityAntialiasing = auto()
    NonCosmeticDefaultPen = auto()

作为另一个示例,Qt::AlignmentFlag 标志的枚举名称为 'AlignmentFlag',但类型名称为 'Alignment'。非标志枚举具有相同的类型和枚举名称。

enum Qt::AlignmentFlag
flags Qt::Alignment

在 Python 中指定此标志的方法如下

@QFlag
class Alignment(enum.Flag):
    ...

有关注册 Python Enum 派生类的详细信息,请参阅 @QEnum

同时,所有枚举和标志都已转换为 Python Enums(自 PySide 6.4 起为默认设置),请参阅新 Python Enums部分。