Использование QScriptEngine для вычисления вычислений

Я создаю инструмент моделирования диаграмм, который соединяет Items в Tasks, Предметы имеют Properties (просто имя / значение отношения) и задачи имеют Formulas, Я намерен создать пользовательский интерфейс для пользователей, чтобы написать в QLineEdit формула используя синтаксис C ++ (т.е. (property1 * property2)/property3), а затем выведите результат. Конечно, формула придется как-то анализировать и вычислять для вывода результата.

Моя проблема с этим при использовании QScriptEngine подходит для этого. Я видел, что это можно использовать выполнять расчеты с использованием evaluate(), Помимо 4 «обычных» операций (+, -, * и /), я только ожидаю, что, вероятно, sqrt() а также pow() может потребоваться — но, видимо, Math также может использоваться внутри строки оценки.

Кроме того, мне нужно хранить и восстанавливать эти формулы, так что я рассматривал их как QStrings для этого, так как мне нужно будет записать / прочитать их в / из файлов.

Как вы думаете, это хороший подход? Что бы вы посоветовали в качестве хорошего чтения для этого типа целей?

0

Решение

Да, такой подход хорош. Я использовал это для аналогичной задачи. Обратите внимание, что QScriptEngine использует синтаксис JavaScript, а не синтаксис C ++. Но синтаксис JavaScript является мощным и удовлетворяет обычные потребности пользовательских формул. Он поддерживает обычные операторы, математические функции, скобки, локальные переменные и т. Д.

Вы можете сохранить формулу в QString, Если вам нужно выполнить одну и ту же формулу несколько раз, вы должны использовать QScriptProgram составить формулу перед выполнением.

1

Другие решения

Других решений пока нет …