Я создаю инструмент моделирования диаграмм, который соединяет Items
в Tasks
, Предметы имеют Properties
(просто имя / значение отношения) и задачи имеют Formulas
, Я намерен создать пользовательский интерфейс для пользователей, чтобы написать в QLineEdit
формула используя синтаксис C ++ (т.е. (property1 * property2)/property3
), а затем выведите результат. Конечно, формула придется как-то анализировать и вычислять для вывода результата.
Моя проблема с этим при использовании QScriptEngine
подходит для этого. Я видел, что это можно использовать выполнять расчеты с использованием evaluate()
, Помимо 4 «обычных» операций (+, -, * и /), я только ожидаю, что, вероятно, sqrt()
а также pow()
может потребоваться — но, видимо, Math
также может использоваться внутри строки оценки.
Кроме того, мне нужно хранить и восстанавливать эти формулы, так что я рассматривал их как QStrings
для этого, так как мне нужно будет записать / прочитать их в / из файлов.
Как вы думаете, это хороший подход? Что бы вы посоветовали в качестве хорошего чтения для этого типа целей?
Да, такой подход хорош. Я использовал это для аналогичной задачи. Обратите внимание, что QScriptEngine
использует синтаксис JavaScript, а не синтаксис C ++. Но синтаксис JavaScript является мощным и удовлетворяет обычные потребности пользовательских формул. Он поддерживает обычные операторы, математические функции, скобки, локальные переменные и т. Д.
Вы можете сохранить формулу в QString
, Если вам нужно выполнить одну и ту же формулу несколько раз, вы должны использовать QScriptProgram
составить формулу перед выполнением.
Других решений пока нет …