Неділя, 21.04.2019, 23:28
Гость

Мішатронік

Автор - Кренцін Михайло

Мобільна версія | Додати у вибране  | Мій профіль | Вихід | RSS |
Меню сайту
Наше опитування
Вам легко дається програмування
Всього відповідей: 1
Статистика

Онлайн всього: 1
Гостей: 1
Користувачів: 0




Система метаоб'єктів

Частина розширень реалізована стандартними методами C ++, проте Qt використовує і більш складні синтаксичні розширення, тому він використовує автоматичну генерацію коду.
Для цього в C ++ реалізований механізм шаблонів, але він не надає всіх необхідних Qt можливостей, погано сумісний з динамічної об'єктною моделлю і в повній мірі не підтримується всіма версіями компіляторів.
У складних ситуаціях Qt використовує свій компілятор метаоб'ектів moc, що перетворює код з розширеннями в стандартний код C ++. Для позначення того, що клас використовує метаоб'ектние можливості (і, відповідно, повинен оброблятися moc), в розділі private потрібно вказати макрос Q_OBJECT.
Якщо ви зустрічаєте дивні помилки компіляції, які повідомляють про те, що у класу не визначений конструктор, або у нього немає таблиці віртуальних функцій (vtbl), швидше за все ви забули код, що генерується moc. Зазвичай це відбувається, якщо не вказано макрос Q_OBJECT.
Щоб уникнути помилок Q_OBJECT краще використовувати в усіх класах, успадкованих від QObject (побічно або безпосередньо).
Використання динамічного підходу пов'язано з певними втратами в продуктивності в порівнянні зі статичним, однак цим можна знехтувати, якщо взяти до уваги отримані переваги.
У числі інших, метаоб'ектний код додає метод

virtual const QMetaObject * QObject :: metaObject () const;
який повертає вказівник на метаоб'ект об'єкта.
На системі метаоб'ектів влаштовані сигнали, слоти і властивості.
При спадкуванні від QObject пам'ятайте про обмеження, що накладаються moc:
При множинному успадкуванні нащадком QObject повинен бути перший і тільки перший успадкований клас:

 

class MyClass : public QObject, public Foo, public Bar
{
 // ...
};


Віртуальне успадкування з QObject не підтримується.

 

 

 

Форма входа
Пошук
Календар
«  Квітень 2019  »
ПнВтСрЧтПтСбНд
1234567
891011121314
15161718192021
22232425262728
2930
Друзі сайту
Погода у Вінниці


Єдина Країна! Единая Страна!