Система метаобъектов Qt позволяет много интересной интроспекции. Но моя проблема заключается в следующем: предположим, что я закодировал class MyClass : public QObject
. Я хочу иметь кнопку в моем графическом интерфейсе, чтобы создать экземпляр MyClass
. Но я решил создать MySubClass : public MyClass
, и я создаю еще одну кнопку для создания экземпляра MySubClass
.Qt: Как получить все классы, являющиеся дочерними элементами определенного класса.
Теперь коллега также создает свой собственный подкласс. Есть ли способ автоматически узнать все классы, которые расширяют MyClass
(и автоматически добавить соответствующую кнопку)?
Я вижу некоторое обходное решение, подобное наличию массива MetaObject
, так что я могу вызвать QMetaObject::newInstance()
на каждом из них, но мне требуется добавить вручную подкласс каждый раз, когда в базу данных добавляется новый подкласс.
Есть ли автоматический способ сделать это? В случае необходимости я могу ограничиться классами, которые реализуют конкретный Q_INTERFACE
, если это имеет значение.
Я задаю этот вопрос, потому что я знаю, что могу это сделать на Java – Fezvez