在设计器中为PyQ中制作的自定义小部件排序Q\ U标志

2024-10-04 03:27:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在PyQt中创建一些自定义小部件,这些小部件将用于Qt的设计器中。 其中一些具有Q_FLAGS属性,例如QtCore.Qt.AlignmentFlag一些。因为我不会使用整个QtCore.Qt.Alignment标志(这是不必要的,会造成混乱),所以我创建了一个QFlags类。你知道吗

class SomeWidget(QtWidgets.QWidget):
    class LabelAlignment:
        AlignLeft = int(QtCore.Qt.AlignLeft)
        AlignHCenter = int(QtCore.Qt.AlignHCenter)
        AlignRight = int(QtCore.Qt.AlignRight)
        AlignTop = int(QtCore.Qt.AlignTop)
        AlignVCenter = int(QtCore.Qt.AlignVCenter)
        AlignBottom = int(QtCore.Qt.AlignBottom)

    QtCore.Q_FLAGS(LabelAlignment)

(注意:我正在使用int()转换,因为我需要执行一些位操作,而且,在设计器的属性表中,标志pyqtProperty始终被读取为int;我尝试使用普通标志,但结果是相同的)

问题是,在Designer的属性编辑器中,这些标志是按不可预知的顺序排序的。我假设这是由于使用LabelAlignment.__dict__来映射类的标志,从而创建了一个“未排序”的标志列表(很明显,每次设计器加载插件接口时都会更改,因为python的dict是无序的)。你知道吗

有没有办法对这些标志进行排序(可能使用OrderedDict)?你知道吗


Tags: 属性排序部件标志qtclassintflags