Об использовании недокументированного класса в Qt - PullRequest
9 голосов
/ 24 ноября 2011

Безопасно ли использовать недокументированный класс QObjectUserData и QObject::setUserData в Qt?

Ответы [ 3 ]

16 голосов
/ 25 ноября 2011

Вместо этого вы можете использовать QObject::setProperty, это позволяет вам устанавливать не только объявленные свойства времени компиляции, но и динамические свойства, которые не нужно объявлять перед использованием.Это позволяет вам присоединять произвольные значения к объектам QObjects во время выполнения, подобно пользовательским данным.

9 голосов
/ 24 ноября 2011

В общем, вы не должны полагаться на недокументированные API.Если вы когда-нибудь планируете обновить Qt, не используйте его!

4 голосов
/ 25 ноября 2011

Недокументированные классы обычно являются внутренними классами и не являются частью 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...