Объектная модельОбъектная модель стандартного C++ предоставляет весьма эффективную поддержку объектной парадигмы во время исполнения. Но из-за ее статической природы она является негибкой в некоторых проблемных областях. Программирование графического интерфейса пользователя является областью, требующей как эффективности во время исполнения, так и высокого уровня гибкости. Qt предоставляет и то, и другое, объединяя скорость C++ и гибкость объектной модели Qt. Qt добавляет к C++ следующие возможности:
Многие из этих возможностей Qt реализованы с помощью стандартных приемов C++, базирующихся на наследовании от QObject. Остальным, подобно механизму связи между объектами и системе динамических свойств, требуется Система мета-объектов, предоставляемая собственным Компилятором мета-объектов (moc) Qt. Система мета-объектов - это расширение C++, делающее язык более пригодным для подлинного компонентного программирования графического интерфейса пользователя. Несмотря на то, что для расширения C++ можно использовать шаблоны, система мета-объектов предоставляет преимущества использования стандартного C++, чего нельзя добиться с помощью шаблонов; смотрите Почему в Qt не используются шаблоны в сигналах и слотах? Важные классыЭти классы образуют основу объектной модели Qt.
Объекты Qt: ссылочный тип (Identity) или тип значений (Value)Некоторые из добавленных возможностей объектной модели Qt, перечисленных выше, требуют чтобы мы думали об Объектах Qt как о ссылочном типе (identities), а не типе значений (values). Типы значений копируются или присваиваются; ссылочные типы - клонируются. Клонирование означает создание нового ссылочного типа, а не точной копии старого. Например, двойники (twins) имеют различные ссылочные типы. Они могут выглядеть одинаковыми, но они имеют разные имена, разное расположение и могут иметь совершенно разные сети связей (social networks). Следовательно, клонирование ссылочного типа (identity) более сложная операция, чем копирование или присвоение типа значения (value). Мы можем увидеть, что это значит в объектной модели Qt. Объект Qt...
По этим причинам Объекты Qt должны рассматриваться как ссылочный тип (identities), а не как тип значений (values). Ссылочные типы клонируются, а не копируются или присваиваются, а клонирование ссылочного типа является более сложной операцией, чем копирование или присваивание типа значений. Поэтому у QObject и всех подклассов QObject (прямых или непрямых) конструкторы копирования и операторы присваивания заблокированы. |
Попытка перевода Qt документации. Если есть желание присоединиться, или если есть замечания или пожелания, то заходите на форум: Перевод Qt документации на русский язык... Люди внесшие вклад в перевод: Команда переводчиков |