Я бы хотел сохранить метаобъекты в списке, подобном следующему:
myList = QList<QMetaObject>();
myList->append(MyClass::staticMetaObject);
myList->append(MyOtherClass::staticMetaObject);
Я хочу отслеживать эти объекты в приложении, но пока не хочу их размещать.Добавив некоторую информацию в мои классы, я смогу использовать функцию MetaObject "classInfo (int) .value ()".Я использую это, когда храню их в QListWidget.Когда нажата строка в QListWidget, я хотел бы иметь возможность создать объект такого специфического вида, который хранится в списке.(Также нужно добавить, что все классы получены из одного и того же базового класса)
Этот пример кода описывает кое-что из того, что я хочу сделать, за исключением того, что в его примере вы добавляете классы по мере продвижения.http://lists.qt.nokia.com/pipermail/qt-interest/2012-January/037204.html
Я читаю руководство, и когда я пытаюсь что-то вроде:
MyBaseClass *test = qobject_cast<MyBaseClass*>myList->at(i).newInstance();
Проект компилируется, но когда я пытаюсь напечатать "тестовый" объект, он становится пустым.Что я делаю неправильно?И это лучший способ сделать это?
Также смотрел на MetaType, но где я мог бы хранить, например, строку для меню, если мне не разрешено создавать объект?Будет ли это лучшим решением, если у меня есть статическая функция, которая возвращает строку?
Редактировать: Я теперь изменил, так что конструкторы Q_INVOKABLE, который решил проблему, где "test == null".
Но каковы недостатки этого решения?Должен ли я просто использовать фабрику объектов (по старинке с переключателем)?