2011-11-24 17 views
9

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

+0

它似乎是Qt 4.2的残余?我建议使用更新版本的Qt,比如4.7。你想用它做什么? –

回答

15

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

9

一般而言,您不应该依赖未记录的API。如果你打算升级Qt,那就不要使用它!

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时不管你在做。