PyQt子类化

4 投票
1 回答
2212 浏览
提问于 2025-04-15 16:34

通常在Python中使用Qt控件的方法是通过继承这些控件。

Qt控件类有很多方法,所以我不可避免地会在子类中添加一个和Qt控件里同名的方法。在Python中,所有的方法都是虚拟的,这让我担心可能会有Qt的代码调用到我自己写的方法,而不是预期中的Qt方法。最糟糕的情况是,这可能会导致一些边缘情况出现问题,而这些问题在测试时不容易发现。

另一方面,也有可能所有的PyQt方法只是C++代码的包装,这样的话,我在Python中做的子类化就不会影响到它们。

有没有人知道具体是哪个情况呢?

1 个回答

3

如果底层的C++方法是虚拟的,那么每当C++代码调用这些方法时,你在Python中重写的方法就会被调用。如果这些方法只是普通的方法,那么默认情况下,任何C++代码都会调用原来的C++方法(不过Python代码会调用Python的方法,因为它能看到Python对象,而在Python中所有的方法都是“虚拟的”)。

撰写回答