PyQt4 @pyqtSlot: для чего нужен результат kwarg?
чтение этой, возникли два вопроса:
1. Тут написано
иногда необходимо явно пометить метод Python, как быть слот в Qt
в то время как я всегда использую декоратор @pyqtSlot, потому что он говорит:
подключение сигнала к декорированному методу Python также имеет преимущество уменьшения объема используемой памяти и немного быстрее
Я спрашиваю себя: в каких конкретных случаях она необходима? и: есть ли преимущества использования @pyqtSlot оформитель?
2. Аргумент ключевого слова result, какова его цель?
@pyqtSlot(int, result=int)
def foo(self, arg1):
""" C++: int foo(int) """
это похоже на тип возвращаемого значения, но AFAIK вы не можете получить возвращаемые значения при излучении сигналов.
есть идеи по этому поводу?
1 ответов
это быстрее из-за архитектуры PyQt. PyQt преобразует слоты python в слоты C++ для связи с платформой Qt. Когда вы явно отмечаете метод Python как слот Qt и предоставляете для него подпись C++, код PyQt не должен угадывать саму подпись C++, как это уже указано. Это может повысить эффективность тяжелых проектов.
возвращаемое значение необходимо только тогда, когда вы хотите вызвать слот как обычный функция.
редактировать: похоже, что QMetaObject.invokeMethod
метод выполняет слот и использует его возвращаемое значение.