Я хотел бы проанализировать файл QML, найденный внутри существующего приложения, и изменить некоторые его свойства. Однако всякий раз, когда я пытаюсь загрузить компонент, я получаю сообщение об ошибке, говорящее, что компонент не может быть загружен. Вероятно, это связано с тем, что мне не хватает некоторых импортированных модулей QML.
У меня такой вопрос: возможно ли проанализировать файл QML из c ++ в QT, если у меня нет доступа ко всем импортированным модулям? ? Кажется, это должно быть довольно просто, все, что я хочу сделать, это программно перевернуть несколько логических значений и изменить некоторые числа.
Я уверен, что я мог бы просто выполнить поиск и замену в стиле регулярных выражений, но это ' было бы намного лучше, если бы я мог разобрать существующую структуру объектов файлов.
Вот что я попробовал (я не делаю все нижеприведенное ниже, это просто разные подходы, которые я проверял):
QString urlString = "/path/to/file.qml";
QUrl url = QUrl::fromLocalFile(urlString);
QFile file(urlString);
if(!file.exists()){
qDebug << "Can't find file" << endl;
}
// Try using qqmlengine
QQmlEngine engine;
QQmlComponent component(&engine, url);
QObject *object = component.create(); // Error: QQmlComponent: Component is not ready
// Try using qquickview
QQuickView view;
view.setSource(url); // generates lots of: module "MyCustomModule" is not installed
// Try using qqmlApplicationEngine
QQmlApplicationEngine appEngine;
engine.load(url); // generates lots of: module "MyCustomModule" is not installed
Эти подходы работают, когда Я тестирую с помощью простого файла qml. Я попробовал это, и мне удалось получить доступ и изменить свойства.
import QtQuick 2.0
Item {
width: 100
height: 62
}