2011-09-02 11 views
0

방금 ​​Qt 애플리케이션을위한 임베디드 파이썬 플러그인 세트를 유지하기 시작했습니다. 나는 또한 PyQt와 Python에 익숙하지 않으므로 나와 함께 감당하십시오.PyQt QTreeWidget 'expanded'신호가 잡히지 않았습니다.

"확장 된"신호가 해당 핸들러에 의해 포착되지 않는 한 대화 상자에서 QTreeWidget 구현이 있습니다. 나는 그것이 잘 작동하는 다른 대화 상자를 가지고있다.

문제 대화 상자에서 연결이 성공했는지 확인할 수 있습니다.

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

는 True로 평가됩니다. 하위 표시기를 클릭하여 항목을 확장하면 [+] 기호가 마이너스로 바뀌지 만 그 외에는 아무 것도 발생하지 않습니다. 마찬가지로, [-]를 클릭하면 [+]로 토글됩니다. 두 경우 모두 Indicator를 SHOW로 설정하도록 ChildIndicatorPolicy를 설정했습니다.

정상적으로 작동하는 대화 상자에서 사용자가 더하기 기호를 클릭하면 'expanded'처리기가 실행됩니다. 클릭 할 때 표시기 만 토글됩니다.

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

내가 로깅 호출에 중단 점을 가지고 있지만 문에 도달되지 않습니다 :

내 처리기 코드는 간단하다.

나는 실패 대화, 나는 위의 하나의 직전에 연결된 다른 신호를 가지고 있고, 그것을 잘 작동합니다 :

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

는 발사 또는 적발되는 확장 된 신호를 막을 수 있나요? 다른 사건일까요? 나는 무엇을 찾고 있어야 하는가? 나는 나의 명칭이 약간 떨어져있을 수도 있다는 것을 알고 있으며, 나는 그 점에 관해서도 어떤 교정도 환영한다.

답변

0

이 문제점을 발견했습니다. 오도 ​​된 이름에도 불구하고 객체는 QTreeWidge입니다. 신호 이름을 "expanded"에서 "itemExpanded"으로 바꾸고 매개 변수 유형을 QTreeWidgetItem*으로 변경하면 모든 것이 올바르게 작동합니다.

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

QTreeView 확장 이벤트의 신호는 "expanded(QModelIndex)"입니다.

또는 new style signal/slot syntax을 사용해보십시오. 특정 신호에 대해 정확한 인수 유형을 찾는 것보다 훨씬 쉽습니다.

wdg.treeView_.expanded.connect(wdg.expanded) 
+0

새로운 구문이 마음에 들다. 감사. – iwonder

관련 문제