Давно хотел написать что-нибудь об этом замечательном фреймворке, с которым работаю достаточно много времени. Qt можно сказать перевернул моё отношение к с++. В этой заметке хочу рассказать об использование интересного и полезного инструмента - QtScript. О его назначении, что это такое и с чем его едят, можно почитать достаточно подробно в русском варианте здесь.
Итак, сразу перейдем к делу. Простейший вариант обработки скрипта:
Далее можно смело в коде скрипта делать так:
Итак, сразу перейдем к делу. Простейший вариант обработки скрипта:
// создаем среду для исполнения кода Qt Script QScriptEngine engine; // выполняем код "100 + 1" и возвращаем значение QScriptValue value = engine.evaluate("100 + 1"); // проверяем ошибки if (engine.hasUncaughtException()) qCritical() << engine.uncaughtExceptionBacktrace(); // преобразуем QScriptValue в C++ тип int cppvalue = value.toInteger();Допустим, нам требуется передать некий объект в скрипт и проделать с ним какие-то действия. Как написано в документации - "Любой экземпляр, основанный на QObject, можно сделать доступным для использования в сценариях.".
// объект для передачи в скрипт QLabel * label = new QLabel; // создаем объект-обёртку для использования в QtScript QScriptValue objectValue = engine.newQObject(); // передаем его непосредственно в глобальное окружение скрипта engine.globalObject().setProperty("label", engine.newQObject(label));Теперь в коде скрипта доступна глобальная переменная label. Переменная служит в качестве посредника для базового объекта C++.
Далее можно смело в коде скрипта делать так:
label.setText("Hello World !");и наш лэйбл отобразит отобразит все что нам нужно.
Комментариев нет:
Отправить комментарий