2011-11-24 21 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時不管你在做。