0

複数の引数をどのように定義しますか? どのようなタイプがサポートされていますか? また、別のデコレータと組み合わせると失敗することがあるのはなぜですか?

4

1 に答える 1

2

これに関する実際のドキュメントが見つからなかったため、ソースに移動しました- pysideslot.cpp

Slot2 つのキーワード引数name(スロットに名前を付ける文字列) とresult(関数の戻り値の型を指定するために使用される Qt 型に名前を付ける Python 型オブジェクトまたは文字列) を取ります。が指定されていない場合nameは、デコレートしている関数から読み取ろうとしますが、注意してください: 他のデコレータが関数の名前を台無しにすることがあるので、Slot を別のデコレータと組み合わせる場合は、明示的にname引数を指定します。

Slot に渡す位置引数は、PySide::Signal::getTypeName によって文字列に変換され、コンマ区切りの文字列に結合されます。これはスロットの署名となり、通話のルーティングに使用されます。

たとえば、次のデコレータがあるとします。

@QtCore.Slot(int,str,result=float)
def func(a,b):
  assert len(b)==a; upload(b); return 2.5

PySide 内部では、'int,QString' の呼び出し署名文字列と 'double' の resultType 文字列が作成されます。

これがスロットのデバッグに苦労している次の人に役立つことを願っています.

于 2013-05-18T13:01:18.600 に答える