@ user2448027の回答は正しいですが、 private slots
Qtの設計パターンには欠けている点がありますpublic slots
。
スロットprivate
を作成すると、オブジェクトのユーザーは、メンバー アクセス演算子 (または)connect
ではなく、関数を使用してスロットを呼び出すようになります。.
->
クラスのスロットの 1 つに遅いコードまたはブロック コードがあるとします。クラスのユーザーが作成されたオブジェクトを別のスレッドに移動することを期待しているため、このオブジェクト (GUI または GUI に関連するオブジェクト) の所有者は、このスロットを呼び出してフリーズまたはブロックしません。ポイントは次のとおりです。スロットが.
or->
演算子によって直接呼び出された場合、スロットはブロックされます。呼び出し元メソッドの現在のスレッドがスロットを使用するため、パブリック スロットを使用する場合にのみ発生する可能性があります。解決策はスロットを作成することですprivate
。そのため、ユーザーはそれを でのみ呼び出すことができconnect
、メンバー アクセス演算子(.
または->
) では呼び出すことができません。
結論:
- ブロッキング スロットがある場合は、それらを にします
private
。
- オブジェクトプロパティの簡易設定としてスロットを使用する場合は、スロットを にします
public
。
- 戻り値または不定の参照引数を持つメソッドが必要な場合は、それらをスロットにしないでください (ナンセンスです)。それだけ
public
で十分です。