Экспорт констант в qml
У меня есть отдельный класс со статическими константами (в данный момент строковыми)
namespace constants {
Q_NAMESPACE
class SharedConstants : public QObject {
Q_OBJECT
Q_PROPERTY(QString Property MEMBER Property CONSTANT)
public:
static inline const QString Property{"MY_PROPERTY_TEXT"};
};
} // namespace constants
В main.cpp я прокидываю его в qml с помощью
qmlRegisterUncreatableType<constants::SharedConstants>(
"Constants", 1, 0, "SharedConstants", "SharedConstants class is not createable");
И при попытке обращения к моему свойству в qml с помощью
import Constants 1.0
...
console.info(SharedConstants.Property)
Я получаю вывод undefined
Предполагаю, что статичные параметры класса не были почему-то определены в qml, но не понимаю почему.
Изначально я пытался просто прокинуть константы в qml, с условием что мне необходимо использовать import Constants
. Но не пришел к успеху и решил использовать класс, как вспомогательный инструмент. Хотя и тут что-то у меня не складывается. Помогите, пожалуйста. Если вы знаете как прокинуть константы из namespace в qml с использованием import
, тоже буду благодарен.
Использую Qt 5.15.2, стандарт cpp 17.
Ответы (1 шт):
Замена
qmlRegisterUncreatableType
на
qmlRegisterSingletonType
или
qmlRegisterSingletonInstance
решили мою проблему, и все стало корректно работать.