Давать QML константный указатель на константный объект, а не неконстантный объект? - PullRequest
0 голосов
/ 10 октября 2018

У меня есть проект, использующий QML, в котором QML имеет объект типа Foo.Я хочу изменить это так, чтобы у QML был объект типа const Foo.Как мне это сделать?У меня QML вызывает функцию C ++, которая работала и заняла Foo*.Я изменил его на const Foo* (как это должно быть по логике), но я получаю ошибку времени выполнения в строке QML, которая вызывает его, говоря: "Error: Unknown method parameter type: const Foo*".

Я попытался изменить

qmlRegisterType<Foo>("FooLib", 1, 0, "Foo");

до

qmlRegisterType<const Foo>("FooLib", 1, 0, "Foo");

но безрезультатно.Затем я попытался выполнить

qmlRegisterUncreatableType<Foo>("FooLib", 1, 0, "Foo", "Can't create one");

и заменить мой QML FooLib.Foo {} вызовом созданного мной фабричного метода, который возвращает Foo*.Та же ошибка во время выполнения.

Я попытался вернуть свой заводской const Foo*.Это сделало прогресс.Это делает это не сбой.Тем не менее, я получаю ошибку во время выполнения в QML, например "TypeError: Cannot read property 'bar' of undefined", когда он пытается получить доступ к Q_PROPERTY из Foo.Свойство имеет только READ, а эта функция-член const.Ошибка с undefined заставляет меня думать, что, возможно, QML не знает, что const Foo совпадает с Foo, когда дело доходит до const Q_PROPERTY с, или что он получает Foo* с от другихфункции и не знает, что они могут быть преобразованы в const Foo* с.

Это правильно?QML не может автоматически конвертировать Foo* в const Foo*?Как я должен написать const-правильный код?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...