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枚举部分。