2009-04-27 3 views
-1

PyQt/PyKde에 작은 앱 (정확하게 KDE4 플라스 모이드)을 개발 중입니다. 내 응용 프로그램에서KListWidget의 드래그 앤 드롭 (PyQt/PyKde 프로그래밍)

일부 행 가득 KListWidget이,이 사진을 참조하십시오

http://img212.imageshack.us/img212/8444/sshot3.jpg

내가 예를 들어 내가 할 수 있어야, 목록 행에 대한 드래그 & 드롭 액션을 구현해야 모든 파일을 한 행에두면 앱에서이 파일을 목록의 이름으로 보냅니다. 드래그 & 드롭 이미 나는 유사한 방법으로 목록에 방법을 연결하기 만하면 구현이 발생하면 전화

self.contactsList = KListWidget() 
self.contactsList.setFrameShape(QFrame.StyledPanel) 
self.contactsList.setFrameShadow(QFrame.Sunken) 
self.contactsList.setIconSize(QSize(35, 35)); 

방법 :

목록은이 코드 조각에 의해 만들어졌습니다 :

self.connect(self.contactsList, SIGNAL("signal_()"), self.method) 

어떤 도움 self.contact 정의 된 클래스 정도로 긴,

+0

이미 정확히 구현 된 것을 명확히 할 수 있습니까? 또한 어떤 방법으로 목록에 "연결"하시겠습니까? Qt 신호/슬롯 연결을 의미합니까? –

답변

0

PyQt는 신호들이 동적으로 정의 될 수 이해할 것이다 s_list_method()는 QWidget을 상속받으며 동적 신호를 낼 수 있습니다. 예를 들어

, 목록 추가 코드를 처리하는 contactsList 객체의 메소드의 끝에서 : 기분이 어디든지 contactsList 개체를 보유 (또는 클래스의 초기화에서 다음

def contacts_list_method(self, someparameters): 
    doStuff() 
    doMoreStuff() 
    ... 
    self.emit(QtCore.SIGNAL("contacts_list_method_done()")) 

를 A는 더 좋은 곳으로는) 다음과 같은 연결 넣어 :

self.connect(self.contactsList, SIGNAL("contacts_list_method_done()"), self.method) 

당신은 또한 QtCore.SIGNAL을 미리 정의 할 수 있습니다 ("contacts_list_method_done()") 대상으로하고 당신이 contacts_list_method에 방출 할 때 다음 바로 객체를 참조하십시오.

+0

이 방법은 효과가 없지만 klistw 대신 qtreewidget을 사용하여 해결했습니다. – Giancarlo

+0

실제로 답변을 게시하고 정답으로 선택해야합니다 (분명히 회사 기밀 코드가 아닌 경우). 나는 많은 사람들이 당신이 어떤 시점에서 묘사 한 행동을 원할 것이라고 상상한다. :) –