PySide6.QtCore.QFlag

@QFlag

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

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

示例

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):
    ...

请参阅@QEnum以注册Python Enum派生类。

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