2011-11-24 10 views
9

Qtで文書化されていないQObjectUserDataクラスとQObject::setUserDataクラスを使用しても安全ですか?Qtでの文書化されていないクラスの使用について

+0

Qt 4.2の残骸だと思いますか?私は4.7のような新しいバージョンのQtを使うことを勧めます。あなたはそれをどうしたいのですか? –

答えて

15

代わりにQObject::setPropertyを使用すると、コンパイル時に宣言されたプロパティだけでなく、使用する前に宣言する必要のない動的プロパティも設定できます。これにより、ユーザーデータと同様に、実行時にQObjectに任意の値を添付することができます。

9

一般に、文書化されていないAPIに頼るべきではありません。 Qtのアップグレードを計画しているなら、それを使用しないでください!

4

通常、文書化されていないクラスは内部クラスであり、Qt APIの一部ではありません。つまり、次のQtバージョンでAPIが変更されない、またはクラスが完全に削除されるという保証はありません。だから、

// 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のバージョンに切り替える際、あなたがやっていたものは何でも再実装/修正する必要がある場合があります。たとえば、qobject_p.hは、次の警告が含まれています。

関連する問題