PyQt QTreeWidget «расширенный» сигнал не перехватывается - PullRequest
0 голосов
/ 03 сентября 2011

Я только начал поддерживать набор встроенных плагинов Python для приложения Qt.Я также новичок в PyQt и Python, так что терпите меня.

У меня есть реализация QTreeWidget в одном диалоге, где «расширенный» сигнал не перехватывается соответствующим обработчиком.У меня есть еще одно диалоговое окно, где оно работает просто отлично.

В диалоговом окне проблемы я могу убедиться, что подключение прошло успешно.

connected = wdg.connect(wdg.treeView_,SIGNAL("expanded(QTreeViewItem*)"), wdg.expanded)

оценивается как True.Когда я нажимаю на дочерние индикаторы, чтобы развернуть элемент, знаки [+] меняются на минус, но больше ничего не происходит.Аналогично, когда я нажимаю [-], он переключается обратно на [+].Я установил ChildIndicatorPolicy, чтобы изначально установить индикатор на SHOW в обоих случаях.

В диалоговом окне, которое работает ОК, когда пользователь нажимает на знак плюс, выполняется «расширенный» обработчик.Только индикатор переключается при нажатии.

Мой код обработчика просто:

def expanded(self, item):
    logging.debug("In expanded handler")

У меня есть точка останова при вызове журнала, но оператор никогда не достигается.

В диалоговом окне с ошибкой, у меня есть другой сигнал, который подключен непосредственно перед тем, что приведен выше, и он прекрасно работает:

wdg.connect(wdg.treeView_,SIGNAL("currentItemChanged(QTreeWidgetItem*, QTreeWidgetItem*)"), wdg.itemChanged)

Есть ли что-нибудь, что могло бы предотвратить срабатывание или перехват расширенного сигнала?Может быть, еще одно событие?Что я должен искать?Я понимаю, что моя номенклатура может быть немного неправильной, и я приветствую любые исправления в этом отношении.

Ответы [ 2 ]

2 голосов
/ 03 сентября 2011

Сигнал для события расширения QTreeView "расширен (QModelIndex)" .

В качестве альтернативы рассмотрите возможность использования нового стиля синтаксиса сигнала / слота . Я нахожу это намного проще, чем искать точный тип аргумента для конкретного сигнала.

wdg.treeView_.expanded.connect(wdg.expanded)
0 голосов
/ 04 сентября 2011

Я нашел проблему.Несмотря на вводящее в заблуждение имя, объект является QTreeWidge.Когда я заменил имя сигнала с "expanded" на "itemExpanded" и изменил тип параметра на QTreeWidgetItem*, все заработало.

wdg.connect(wdg.treeView_, SIGNAL("itemExpanded(QTreeWidgetItem*)"), wdg.expanded)
...