- @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部分。