Калькуляторы выдают разные результаты лишь по одной причине:
один калькулятор разбирает выражение «справа-налево», другой - «слева-направо».
Большинство общедоступных бытовых и инженерных калькуляторов (именно физических устройств, не ПК и не смартфон, а именно калькуляторов с кнопочками) разбирают выражения «справа-налево».
Всё остальное, что программируется современными прикладными программистами (калькулятор в Windows, смартфон, иные приложения) - разбирают выражения «слева-направо».
Чтобы понять почему выражение 6/2(1+2) в одном калькуляторе выдаёт 9, а в другом 1 - надо помнить об одном единственном правиле: для любого вычислительного устройства действие умножения и деления равнозначны (если, конечно, разработчик не заложил какую-то иную логику, что было бы нарушением правил математики?).
Вот и получается: при равнозначности действий умножения и деления, калькуляторы получают разные результаты потому и только лишь потому, что в случае «справа-налево» первым идет действие умножения, а в случае «слева-направо» - первым идёт действие деления.
leakt, может быть у вас просто установлено несколько разных версий Qt? windeployqt копирует абсолютно тот же набор библиотек, который используется при запуске проекта из QtCreator.
Если Qt 5.13.0 у вас установлен в директории С:/Qt5.13.0, то windeployqt нужно вызывать из директории С:/Qt5.13.0/5.13.0/mingw73_32/bin при использовании компилятора MinGW.
Правильнее, конечно, просто открыть терминал с настройками под необходимую версию Qt
обратите внимание, что это "разные" терминалы и они вызывают windeployqt из разных директорий.
windeployqt пробовал, он просто закинул их в папку, при запуске выдавало ошибку входа в процедуру в Qt5Widget.dll.
А это потому что вы не тот windeployqt используете. У вас установлено несколько версий Qt, вы своё приложение собираете одной версией, а windeployqt вызываете из другой версии, отсюда и несовместимость.
Сразу уточню, что Qt 5.13.0 MinGW32, Qt 5.13.0 MinGW64, Qt 5.13.0 MSVC 2015, Qt 5.13.0 MSVC 2017 - это всё РАЗНЫЕ версии Qt! Сам Qt один и тот же, но он собран разными компиляторами и имеет разные библиотеки.
Спасибо.
Помогло то, что топикстартер решил не использовать: setSceneGraphBackend(). setTextRenderType() не помог.
Идея с пересборкой библиотеки выглядит как-то совсем не очень.
Не знал, что там такое есть. Но оно работает в реальном времени и если соединение пройдет и закроется, я его ведь не смогу увидеть? Нужно что-то вроде логирования.
Игорь Джулай, очень хороший вопрос, однако :) думаю что да, иначе бы приложение даже не запускалось, ведь библиотеки были бы несовместимы. А может я и не прав.
Да запускаются же другие приложения. Если указать компилятору, чтобы собирал под XP. При установке MSVC13 даже есть доп. опция "поддержка Windows XP".
Проблема только с WebEngine.
WebKit не подошёл даже самой последней версии, пересобранный вот этим товарищем: annulen: криво отображает сайты. Банально, любой иконочный шрифт (FontAwesome) в тегах iотображается наклонным шрифтом... издевательство какое-то.
Столкнулся с этой проблемой после апгрейда минта. Даже пришлось переустановить Qt, но не помогло, сразу почуял что-то не ладное и полез гуглить... Создание ini-файла помогло. Чудеса.
Спасибо, мудрейший.
Да, я понимаю для чего создавался QML. Просто не хочется для конфигурации городить кучу JSON/XML-файлов, потом загружать их, парсить... когда есть такое простое нативное решение.
Можно убить сразу двух зайцев: и параметры объектов определить, и сами объекты создать.
Приятнейшим бонусом является, как я уже говорил, возможность объявления функций прямо внутри модели, что позволит в дальнейшем для какой-нибудь особой физической модели создать особые условия расчета некоторых параметров.
Петр: я посмотрел это, было не совсем понятно как отправить серверу команду, чтобы он начал принимать данные от клиентов. В общем пока сделал через QLocalServer + QLocalSocket, пришлось-таки задействовать Qt Network.
Если смотреть сюды: doc.qt.io/qt-5/ipc.html, то похоже, что в Qt это единственное нормальное решение для Windows.
Для влезания в сеанс есть и бесплатные решения типа TeamViewer или OpenVNC :) но это не совсем то, что нужно.
Про лицензию я знаю, очень печальный пункт на самом деле, хотя причины я примерно понимаю... спасибо.
один калькулятор разбирает выражение «справа-налево», другой - «слева-направо».
Большинство общедоступных бытовых и инженерных калькуляторов (именно физических устройств, не ПК и не смартфон, а именно калькуляторов с кнопочками) разбирают выражения «справа-налево».
Всё остальное, что программируется современными прикладными программистами (калькулятор в Windows, смартфон, иные приложения) - разбирают выражения «слева-направо».
Чтобы понять почему выражение 6/2(1+2) в одном калькуляторе выдаёт 9, а в другом 1 - надо помнить об одном единственном правиле: для любого вычислительного устройства действие умножения и деления равнозначны (если, конечно, разработчик не заложил какую-то иную логику, что было бы нарушением правил математики?).
Вот и получается: при равнозначности действий умножения и деления, калькуляторы получают разные результаты потому и только лишь потому, что в случае «справа-налево» первым идет действие умножения, а в случае «слева-направо» - первым идёт действие деления.