假设我有一个具有这种结构的类(CustomClass
可能/不在层次结构的顶部):
CustomClass
.. QTabWidget
.... QWidget
...... QTreeView
在QTreeView
中,我有一个函数试图回引用CustomClass
。现在我要做的是:self.parent().parent().parent()
。在
虽然这样做很管用,但感觉很马虎,如果我需要改变结构,这将失败。有没有其他方法可以得到CustomClass
?通常我会在它的构造函数期间传递它的一个实例,我可以直接调用它,但是我想知道最好的做法是什么。在
这似乎是一种得体的程序方法:
欢迎任何其他答案:)
这个问题的标题引出了一个非常直接的答案。
QWidget
上的window()
方法返回具有(或可能具有)窗口系统框架的祖先小部件:通常是要查找的“顶级”小部件。文档将更改窗口标题作为规范用例:如果
Qwidget
是窗口本身,则返回self
。在但是,您的问题文本和您自己的答案给出了另一种解释:您可能希望找到属于特定类型的祖先,即使它不是顶级小部件。在这种情况下,迭代祖先通常是正确的解决方案,这与您自己编写的非常相似。所以应该是这样的:
^{pr2}$请注意,您通常应该使用},因为前者正确地处理子类。在
isinstance
,而不是{还请注意,如果没有找到
None
,则此代码将返回None
,这可能是也可能不是您想要的。。。在相关问题 更多 >
编程相关推荐