Q_ENUMS в PyQt4

#python #qt #enums #pyqt #pyqt4

#python #qt #перечисления #pyqt #pyqt4

Вопрос:

Я хотел бы использовать средства перечисления Qt. Я видел в документации модуля QtCore, что есть макросы Q_ENUMS, но я не знаю и информации, как его использовать.

Ответ №1:

В python (и PyQt) способ создания перечисления выглядит следующим образом:

 class MyEnum(object):
    One = 1
    Two = 2
    Three = 3
  

Если вам нужно больше функциональности, пожалуйста, предоставьте более подробную информацию о том, что вы пытаетесь сделать.

Редактировать

Просматривая документацию для QAbstractSocket.StateChanged, я вижу, что это относится к «Созданию пользовательских типов Qt». Я не знаю о какой-либо необходимости регистрации метатипов в PyQt4, поэтому все, что вам нужно сделать, чтобы использовать этот сигнал, это подключить его к соответствующему обработчику:

 class Socket(QTcpSocket):
    def __init__(self):
        QTcpSocket.__init__(self)
        self.stateChanged.connect(self.handleStateChanged)

    def handleStateChanged(self, state):
        print state
  

Комментарии:

1. Я должен передать сигнал об изменении некоторого состояния в объект, а также для проверки данных в слоте. Это делается в классе QTcpSocket — signal changeState

2. Спасибо, это открыло мне глаза. Действительно, регистрация метатипов не нужна. Я воспользуюсь перечислением гранта (…)