Подтвердить что ты не робот

Как работает Qt (точно)?

Когда вы пишете приложение с помощью Qt, его можно запустить сразу в разных операционных системах? И (исправьте меня, если я ошибаюсь) вам не нужно, чтобы Qt уже был установлен на всех платформах, на которых вы хотите выполнить свое приложение?

Как именно это работает? Собирает ли Qt на нужную платформу или собирает некоторые "dlls" (libs) или как это делается? Отличается ли она от программирования Java-приложения, которое работает с межплатформенным интерфейсом.

Если вы используете Python для написания приложения Qt с привязками Python, ваш конечный пользователь должен установить Python?

4b9b3361

Ответ 1

PyQT [и его кузена с открытым исходным кодом PySide] - отличная кросс-платформенная привязка QT для python, но это не волшебное решение для доставки вашего приложения для всех платформ, не занимаясь обслуживанием упаковки/установки. Я думаю, может быть, вы можете ожидать магии.

QT - это кросс-платформенная библиотека, написанная на С++. Это означает, что вы можете написать код С++ или Python (или другой язык с привязками) один раз и создать "окно" (форму, диалоговое окно, что-то на экране) и заполнить его с помощью элементов управления (кнопок и всего этого ) и не должны иметь дело с различиями в платформе, как кнопки создаются в Windows, Linux и Mac OS X.

Поскольку это библиотека, ее можно упаковать несколькими способами. Он может быть "статически связан" (встроен в исполняемый файл/двоичный файл/приложение) или "динамически связан" (известный как DLL в Windows, разделяемая библиотека или unix/linux или как фреймворк в mac os x). Он не всегда "установлен" на компьютере, если он не является общей библиотекой.

Даже когда он "установлен" на компьютер, на этом компьютере может существовать несколько версий, поэтому не следует думать, что это расширение для вашего компьютера, а расширение для приложения (программа ) на вашем компьютере.

Если вы используете привязки Python для QT, то ваш установочный пакет для вашего приложения должен включать в себя двоичные файлы привязки QT (расширения python), базовую среду исполнения Python, включая исполняемые и базовые библиотеки Python, и исходный код вашей программы. Можно упаковать большую часть этого в один "пакет". Например, в Mac OS X все это можно легко добавить в пакет ".app", а в Windows и Linux я считаю, что есть инструменты для упаковки и установки, которые могут помочь вам сделать это легко.

Несмотря на то, что вам нужно будет только один раз написать код пользовательского интерфейса для своего приложения, вы не сможете магически получить возможность отправлять заявку на всех трех основных платформах одновременно, не делая по крайней мере здания установщика или упаковки, отдельно для каждой платформы. Пользователи ожидают загрузить установочный/установочный пакет для Windows или Mac OS X, и, возможно, для Unix/Linux зависит от того, какой дистрибутив вы устанавливаете.

Обновление благодаря AdamW для этой ссылки nokia, содержащей информацию о развертывании

Ответ 2

Qt (в идеале) обеспечивает совместимость источника, а не двоичную совместимость. Вам по-прежнему приходится составлять приложение отдельно для каждой платформы и использовать соответствующие динамические библиотеки Qt (которые также необходимо компилировать отдельно и иметь определенный код для конкретной платформы).

Для вашего последнего вопроса пользователю потребуются Python, библиотеки Qt и библиотека связывания (например, pyqt), но есть различные способы их объединения.

Ответ 3

Проблема заключается в вашем определении "установлено". Для работы Qt исполняемый файл должен иметь доступ к соответствующим библиотекам.

Конечно, для каждой платформы необходимо создать другой исполняемый файл и библиотеки (см. Qt docs).

О Python, если вы хотите запустить исполняемый файл Python, вы должны установить его (более традиционным способом). Если вы не работаете с py2exe в Windows, например.