は、私はこのように、スロットにQListWidget信号を接続しています:信号とスロットの接続でアスタリスクとは何ですか? PythonのはQtで
QtCore.QObject.connect(self.myList, QtCore.SIGNAL("itemClicked(QListWidgetItem *)"), self.ListEventHandler)
私の質問は:QListWidgetItem *
の末尾にアスタリスクが何をするのでしょうか?
は、私はこのように、スロットにQListWidget信号を接続しています:信号とスロットの接続でアスタリスクとは何ですか? PythonのはQtで
QtCore.QObject.connect(self.myList, QtCore.SIGNAL("itemClicked(QListWidgetItem *)"), self.ListEventHandler)
私の質問は:QListWidgetItem *
の末尾にアスタリスクが何をするのでしょうか?
説明するための箇条書きのカップル(私はC++の構文を回避しようとします):
QObject
から継承したクラスのイントロスペクションを提供します。頻繁に文字列を使用して物を識別します。 Pythonにはネイティブイントロスペクションがありますが、C++ではネイティブイントロスペクションはありません。QtCore.SIGNAL("itemClicked(QListWidgetItem *)")
はQListWidgetItem
へポインタはなく、アイテム自体であるパラメータを有するitemClicked
と呼ばれるQtの信号を指します。 C++でが、これは次のようになります、
void itemClicked(QListWidgetItem *item);
は信号またはスロットを識別するために、イントロスペクションのための文字列に戻って、あなたがvoid
ドロップ;
を、変数名(item
)、去る:
itemClicked(QListWidgetItem *)
をQtCore.SIGNAL()
上記と引用符のペアをラップし、あなたが持っている:
QtCore.SIGNAL("itemClicked(QListWidgetItem *)")
ポインタとは何ですか?
これについて多くのSOの質問があります。 Here is oneにはいくつかの類義語があり、簡単に答えが得られます。
これが旧式の構文の場合、新しいスタイルは何ですか?
これをもたらすためのFrodonに感謝します。この場合
object.signalName.connect(otherObject.slotName)
:
self.myList.itemClicked.connect(self.ListEventHandler)
はin the docsもっとPyQtは、フォーマットで、スロットに信号を接続する複数の "神託" 方法を有します。
関数itemClicked
に唯一の引数としてQListWidgetItem
へのポインタが渡されていることを示すためのC++構文です。
「値渡し」ではなく「参照渡し」と考えることができます。
答えてくれてありがとう、James、しかし私はPythonを使っています.C++ではありません。 – PProteus
もちろん、PyQtシグナルのシグネチャは、私が完全に間違っていない限り、C++構文で定義されています。 [This](http://pyqt.sourceforge.net/Docs/PyQt4/new_style_signals_slots.html)は、そうであることを確かに示唆しています。 –
ありがとう、ジョン!それは非常に明確な説明です。あなたは私のためにいくつかの謎を解明しました。 – PProteus
@PProteus curiosotyについては、コードは同じですが、新しいスタイルの構文です: 'self.myList.itemClicked.connect(self.ListEventHandler)' – Frodon
古いスタイルの構文は廃止され、もはや廃止されましたpyqt5でサポートされています。新しいpyqtコードではまったく使用すべきではありません。後方互換性のためにpyqt4でのみサポートされています。 – ekhumoro