2011-10-23 11 views
2

私はQtライブラリを勉強しています。最近、私はslotsというコンセプトを打ちましたが、これまでは特定のイベントに対する反応として実行される関数として理解しています。それだけのことなのでしょうか?なぜPyQtのスロット

なぜこのようなエキゾチックな名前を選んだのですか?slotsこのような普通のものは何ですか?この言葉はとても意味があります。彼らはQtでslotsを考えようとしましたか?

は信号で行く

答えて

2

signalslotという用語は多少のミスマッチがあります。

signalreceiver、またはconnectorslotが良い選択肢でした。

C++では、信号はスロットとして定義された関数にのみ接続できます。信号を通常の機能に接続しようとすると、USBケーブルをイーサネットポートに接続しようとするようなものになります。

しかし、呼び出し可能なものは、あらかじめ定義されたスロットだけでなく、信号に接続できるため、PyQtでは、この区別はそれほど重要ではありません。

これまでのPyQtのバージョンでは、pyqtSlot decoratorも提供されています。このスロットを使用して、いくつかの異なるシグネチャを持つスロットを定義できます。一般的に、PyQtでは、通常のPython呼び出し可能コードよりも、あらかじめ定義されたスロット(C++かPyQtのいずれか)に接続するほうが効率的です。

PyQtの信号とスロットのサポートの詳細については、reference guideを参照してください。

+0

しかし、何によって「スロット」という言葉が選択されたのですか?いくつかの面白い話や事故? – xralf

+0

@ xralf。彼らが意図した「スロット」の意味は、おそらくあなたが提供した辞書のリンクの最初のものに最も近いでしょう。すなわち、鍵穴のようなもの、または...(まあ、あなたの想像力を使用してください。また、「シグナル」と同じ文字で始まる単語を探しています。 – ekhumoro

+0

これは私にとって非論理的に聞こえる。なぜ機能は受信機であるべきですか?関数は、何らかの信号が発生したときに起動されるアクションです。あらゆる行動は何らかの信号によって引き起こされます。 – xralf

2

スロットありがとうございました。信号をスロットに接続します。これはQt自体の中核概念であり、PyQtに特有のものではありません。

Qtのマニュアルには、Signals & Slotsがあります。

これは単なる非常に便利な概念で、コード内のレイヤーをきれいに分離するためのものです。

スロット自体は普通の関数(C++では)であり、通常の関数としてだけでなく、 "シグナルレシーバ"としても使用できます。

関連する問題