关于在 Qt 中使用未记录的类
Posted
技术标签:
【中文标题】关于在 Qt 中使用未记录的类【英文标题】:About using an undocumented class in Qt 【发布时间】:2011-11-24 17:30:18 【问题描述】:在 Qt 中使用未记录的 QObjectUserData
类和 QObject::setUserData
是否安全?
【问题讨论】:
好像是Qt 4.2的残余?我建议使用更新版本的 Qt,比如 4.7。你到底想用它做什么? 【参考方案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 版本时可能必须修复/重新实现您所做的任何事情。
【讨论】:
以上是关于关于在 Qt 中使用未记录的类的主要内容,如果未能解决你的问题,请参考以下文章