2013-04-28 3 views
1

parentWidget에서 이벤트 필터를 사용하여 ChildWidget의 일부인 listWidget에서 항목을 활성화하고 싶습니다.PyQt : QListWidget 활성화하기 아이템

self.w = ChildWidget() 
    def eventFilter(self, source, event): 
     if event.type() in (QtCore.QEvent.MouseButtonPress, 
         QtCore.QEvent.MouseButtonDblClick): 
     if event.button() == QtCore.Qt.LeftButton: 
       self.w.listWidget.itemActivated 

및 ChildWidget의 :

self.listWidget.itemActivated.connect(self.klik) 
    if item.data(Qt.UserRole).toPyObject(): 
     mp3=item.data(Qt.UserRole).toPyObject() 
     playsnd("/home/pi/Desktop/komunikator/Recenice/pekara/"+mp3) 

이벤트 필터는

self.w.listWidget.itemActivated 

가 작동하지 않는 단지 명령, 잘 작동 여기에 관련 parentWidget 코드의 일부입니다. 다른 방법으로 항목을 활성화하고 항목 활성화 신호를 전송할 수 있습니까?

답변

2
In [9]: q.itemActivated 
Out[9]: <bound signal itemActivated of QListWidget object at 0x1d13560> 

당신은 전화하지 않습니다.

하지만 전화를 걸겠습니다.

In [10]: q.itemActivated() 
--------------------------------------------------------------------------- 
TypeError         Traceback (most recent call last) 
<ipython-input-10-3602f33f377a> in <module>() 
----> 1 q.itemActivated() 

TypeError: native Qt signal is not callable 

호출 할 수 없으므로 직접 바인딩 된 절차를 호출해야합니다. 신호를 내보내려면 emit을 사용해야합니다.

q.itemActivated.emit(None) 
+0

좋아, 정확히 무엇을해야하는지 설명해 주시겠습니까? 나는 self.w.listWidget.itemActivated.emit (없음)을 시도했다. 신호를 보내지 만 klik 함수는 "item"매개 변수를받지 못합니다. 내가 어디 갈기 갈기 갈 데요? – speedyTeh

+0

"None"을 매개 변수로 썼기 때문에 ... 올바른 것을 넣으십시오. – LtWorf

+0

나는 그것을 만들었다! 줄은 : self.w.listWidget.itemActivated.emit (self.w.listWidget.currentItem())입니다. – speedyTeh