【问题标题】:Finding QObject which is not part of qobjects hierarchy查找不属于 qobjects 层次结构的 QObject
【发布时间】:2021-10-19 17:18:11
【问题描述】:

在调试版本中,我希望我的程序的特定对象在某个全局注册表中注册自己,这样我就可以在我的应用程序中查看它们并显示它们的状态。

由于它们都是QObjects,我想知道是否有一种聪明的方法可以将它们注册到某个全局QObjects 列表中(我不知道)。我不能使用常规层次结构,因为其中一些对象根本不会成为任何其他 QObject 的子对象。

【问题讨论】:

  • 就在今天,当-widgetcount 给了我 4 个未删除的小部件时,我正在考虑这个问题。那么,未删除的 QObjects 必须是数千个。你有没有想过一些解决方案?我在想应该可以利用元对象来获取类的名称以便能够找到泄漏。
  • 我真的不明白为什么你不希望所有的 QObjects 在常规层次结构中都有父/子关系,但是对于那些孤立的对象,你可以让它们成为其他 QObject 的子对象吗? ?这样一来,您的所有对象要么成为常规层次结构的一部分,要么成为孤立层次结构的一部分。
  • @JarMan:其中许多QObjects 只是在main() 的堆栈上创建,或者是其他类的成员。

标签: qt qt5 qt6


【解决方案1】:

由于QApplication 继承QObject,您可以将活动QApplication 设置为所有QObjects 的父级,不适合您的正常应用程序树。关闭所有窗口后,您可以通过调用const QObjectList & QObject::children() const 来检查QApplication 的所有子级是否泄露QObjects

【讨论】:

    猜你喜欢
    • 2013-12-06
    • 1970-01-01
    • 2021-09-29
    • 1970-01-01
    • 2015-06-25
    • 1970-01-01
    • 2018-03-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多