2009-04-27 5 views
-1

PyQt/PyKdeに小さなアプリケーション(正確にはKDE4プラスモイド)を開発しています。私はいくつかの行で満たされKListWidgetを持っている私のアプリでKListWidgetのドラッグアンドドロップ(PyQt/PyKdeプログラミング)

、この写真を見る:

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

私は例えば、私のことができるようにする必要があり、リストの行のドラッグ&ドロップアクションを実装する必要があります任意のファイルを1行に置くと、アプリはこのファイルをリストの名前に送信します。

リストには、このコードのスニペットによって作成されています:ドラッグ&ドロップが発生したときに呼び出す

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()")) 

ですより良い場所)次の接続置く:あなたはまた、オブジェクトとしてQtCore.SIGNAL(「contacts_list_method_doneを()」)事前に定義し、あなたがcontacts_list_methodでそれを放出するときに単にオブジェクトを参照することができ

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

を。

+0

この方法ではうまくいきませんが、klistwの代わりにqtreewidgetを使用して解決しました – Giancarlo

+0

あなたが実際に行ったことを回答として投稿し、正しい答えとして選択する必要があります(会社の機密コードでない限り)。私は多くの人々があなたが何らかの時点で記述した行動を望んでいると想像しています:) –

関連する問題