2016-11-09 2 views
1

Когда я создаю свой собственный QTreeView с определенным «расширенным» методом, мне нужно сделать что-нибудь особенное, чтобы испускать сигнал по умолчанию? Я прокомментировал псевдо-код, представляющий то, о чем я спрашиваю. Или я могу сделать то, что я сейчас делаю?Специальный метод расширенного события QTreeview

class JMTreeView(QtGui.QTreeView): 

    changed = QtCore.Signal() 

    def __init__(self): 
     super(JMTreeView, self).__init__() 
     self.expanded.connect(self.expanded_item) 

    def expanded_item(self, event): 
     print "expanded" 
     # super(JMTreeView, self).expanded(event) 

Подобно тому, как я справиться, когда я переопределить «showEvent» для диалога, я называю «супер» в конце функции. Нужно ли добавлять что-то похожее на мой расширенный метод?

def showEvent(self, event): 
    geom = self.frameGeometry() 
    geom.moveCenter(QtGui.QCursor.pos()) 
    self.setGeometry(geom) 
    super(Browser, self).showEvent(event) 

ответ

1

QTreeView класс не имеет expanded метод. Есть только сигнал expanded. Более того, механизм сигналов и слотов полностью отделен от системы событий, поэтому нет параллели с переопределяющими защищенными методами, такими как showEvent.

Основная часть обработчиков событий (например, showEvent) относится к деятельности, которая исходит из за пределами приложения. Обычно они реализуют поведение по умолчанию, но иногда ничего не делают. Они почти всегда являются виртуальными методами, что означает, что вы можете предоставить свою собственную реализацию, которую Qt будет вызывать, а не по умолчанию. Если ваша повторная реализация должна поддерживать поведение по умолчанию (или каким-либо образом изменить его), он может сделать это, вызвав реализацию базового класса.

В отличие от этого, сигналы всегда вызывают внутри приложение. Для них нет обработчиков по умолчанию - они просто передают сообщения (например, радиомаяк). Только слушатели могут решить, что делать с сообщениями. Не имеет значения, если никогда не бывает слушателей, или если сообщения никогда не обрабатываются.

Смежные вопросы