2012-06-30 17 views
6

、二つの質問が来た:PyQt4 @pyqtSlot:結果kwargは何ですか? <a href="http://www.riverbankcomputing.co.uk/static/Docs/PyQt4/html/new_style_signals_slots.html#PyQt4.QtCore.pyqtSlot" rel="nofollow">this</a>を読むことによって

1. それは

は、明示的にIながらQtのスロット

としてPythonのメソッドをマークすることが必要な場合があると言います

コンネーションのため、常に@pyqtSlotデコレータを使用してください。また、メモリの使用量を削減する 利点を持っており、わずかに速いです装飾されたPythonのメソッドに信号をcting

私は自分自身に尋ねる:ここで具体的な例には必要なのか? と:@pyqtSlotデコレータを使用しない利点はありますか?

2. 結果のキーワード引数は、その目的は何ですか?

@pyqtSlot(int, result=int) 
def foo(self, arg1): 
    """ C++: int foo(int) """ 

戻り値の型に似ていますが、AFAIKでは信号を送信するときに戻り値を取得できません。

これに関するアイデアはありますか?

答えて

6
  1. PyQtアーキテクチャのために高速です。 PyQtはPythonスロットをC++スロットに変換し、Qtフレームワークと通信します。 Pythonメソッドを明示的にQtスロットとしてマークしてC++シグネチャを提供すると、PyQtコードは既に指定されているので、C++シグネチャ自体を推測する必要はありません。これにより、重いプロジェクトでのパフォーマンスが向上する可能性があります。

  2. 戻り値は、スロットを通常の関数として呼び出す場合にのみ必要です。

編集QMetaObject.invokeMethod方法はスロットを実行しているようですし、それの戻り値を使用しています。

+0

これは意味があります、ありがとう!ですから、デコレータを使用しないという利点はないと思います。<常に使用する> – Pedru

+0

頻繁に使用されるスロットで使用してください。多くのことをしないで、あまり呼び出されない基本スロットの場合、デコレータには必要ありません。それはスクリプトを少し強化しますが、単純な関数では目立たないでしょう。 – iTayb

+0

OK、コードの読みやすさを向上させるため、常にそれを使用すると言います(構文ハイライト表示あり) – Pedru

関連する問題

 関連する問題