4

Python から Qt ウィジェットを使用する通常の方法は、それらをサブクラス化することです。

Qt ウィジェット クラスには非常に多くのメソッドがあるため、必然的に Qt ウィジェットから継承されたものと同じ名前のメソッドをサブクラスに追加することになります。Python では、すべてのメソッドが仮想であるため、一部の Qt コードが予想される Qt コードではなく、私のメソッドを呼び出してしまう可能性があることを懸念しています。テスト中。

一方で、おそらくすべての PyQt メソッドは C++ コードの単なるラッパーであり、Python のサブクラス化に関して私が行うことにはもちろん影響を受けません。

どちらが当てはまるか誰でも知っていますか?

4

1 に答える 1

3

基になる C++ メソッドが仮想の場合、それらをオーバーライドする Python メソッドは、C++ コードがそれらを呼び出すたびに呼び出されます。それらが単なる通常のメソッドである場合、C++ コードはデフォルトで元の C++ メソッドを呼び出します (ただし、Python コードは Python オブジェクトを認識し、すべてのメソッドがそこで「仮想」であるため、Python メソッドを呼び出します)。

于 2009-12-01T20:16:28.797 に答える