У меня есть перечисление C ++, определенное так:
namespace SectionIdNamespace
{
Q_NAMESPACE
enum SectionId {
SomeValue
};
Q_ENUM_NS(SectionId)
};
Я регистрирую это перечисление следующим образом:
qmlRegisterUncreatableMetaObject(
SectionIdNamespace::staticMetaObject,
"SectionIdImportName",
1, 0,
"SectionId",
"Error: only enums"
);
И использую его в QML:
import SectionIdImportName 1.0
....
SectionId.SomeValue
При открытии этого файла QML в Qt Quick Designer (вкладка «Дизайн» в Qt Creator) он отказывается загружать файл и говорит QML module not found (SectionIdImportName)
, так как Designer не запускает никакого кода C ++.
Как я могу заставить Designer работать с этим файлом QML, использующим перечисление C ++?
Мне известны атрибуты перечисления QML_DESIGNER_IMPORT_PATH
и QML .Я попытался «смоделировать» перечисление C ++ таким перечислением QML только для Designer, однако эти значения перечисления используются следующим образом QMLType.EnumType.EnumValue
, в то время как значения перечисления C ++ должны указываться только с помощью EnumType.EnumValue
.Кажется, что код может быть совместим с перечислением C ++ или QML, но не обоими одновременно.
Я использую Qt 5.11, скоро обновлюсь до 5.12.