在Qt中使用未记录的QObjectUserData
类和QObject::setUserData
是否安全?
答案 0 :(得分:16)
相反,您可以查看使用QObject::setProperty
,这样您不仅可以设置编译时声明的属性,还可以设置在使用前不需要声明的动态属性。这允许您在运行时将任意值附加到QObject,类似于用户数据。
答案 1 :(得分:9)
通常,您不应该依赖未记录的API。如果您计划升级Qt,请不要使用它!
答案 2 :(得分:4)
未记录的类通常是内部类,而不是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版本时所执行的操作。