-1

私は PyQt/PyKde で小さなアプリ (正確には KDE4 プラズモイド) を開発しています。

私のアプリでは、いくつかの行で満たされた 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)

どんな助けでも大歓迎です

4

1 に答える 1

0

PyQtシグナルは動的に定義できるため、self.contacts_list_method()を定義するクラスがQWidgetを継承している限り、動的シグナルを発行できます。

たとえば、リスト追加コードを処理するcontactsListオブジェクトのメソッドの最後に次のようになります。

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

次に、contactsListオブジェクトを保持するクラスのイニシャライザー(または、より適切な場所と思われる場所)に、次の接続を配置します。

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

QtCore.SIGNAL( "contacts_list_method_done()")をオブジェクトとして事前定義し、contacts_list_methodで発行するときにオブジェクトを参照することもできます。

于 2009-04-28T11:21:48.923 に答える