【问题标题】:About using an undocumented class in Qt关于在 Qt 中使用未记录的类
【发布时间】:2011-11-24 17:30:18
【问题描述】:

在 Qt 中使用未记录的 QObjectUserData 类和 QObject::setUserData 是否安全?

【问题讨论】:

  • 好像是Qt 4.2的残余?我建议使用更新版本的 Qt,比如 4.7。你到底想用它做什么?

标签: c++ qt qt4


【解决方案1】:

相反,您可以查看使用QObject::setProperty,这不仅允许您设置编译时声明的属性,还可以设置不需要在使用前声明的动态属性。这允许您在运行时将任意值附加到 QObjects,类似于用户数据。

【讨论】:

    【解决方案2】:

    一般来说,您不应依赖未记录的 API。如果您打算升级 Qt,请不要使用它!

    【讨论】:

      【解决方案3】:

      未记录的类通常是内部类,而不是 Qt API 的一部分。这意味着,不能保证 API 不会更改或在下一个 Qt 版本中完全删除该类。例如,qobject_p.h 包含以下警告:

      //  W A R N I N G
      //  -------------
      //
      // This file is not part of the Qt API.  It exists for the convenience
      // of qapplication_*.cpp, qwidget*.cpp and qfiledialog.cpp.  This header
      // file may change from version to version without notice, or even be removed.
      //
      // We mean it.
      

      因此,如果您使用内部 API,则只能靠自己,并且在切换到下一个 Qt 版本时可能必须修复/重新实现您所做的任何事情。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-10-03
        • 1970-01-01
        • 2013-07-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多