Смогу ли я легко портировать приложения Qt? - PullRequest
1 голос
/ 18 сентября 2011

Если я создаю двоичный файл Qt, то пользователю, который его запускает, не нужно будет устанавливать Qt на свой компьютер, верно? То есть это как нативная поддержка MFC - она ​​запускается везде (на Windows, если она была собрана как exe)? Я знаю, что библиотеки должны быть статическими / включенными и так далее, но я спрашиваю только о совместимости с Qt.

Кроме того, если я создаю проект Qt в Windows, нужна ли мне дополнительная работа для использования этого проекта в Linux, учитывая, что версия Qt такая же? А как насчет Mac?

Ответы [ 4 ]

3 голосов
/ 18 сентября 2011

Библиотеки Qt должны быть установлены на целевом компьютере, если только вы статически не связываете библиотеки Qt в своем исполняемом файле. (Я рекомендую , а не , получаемые двоичные файлы будут огромными.)

В зависимости от лицензии, с которой вы используете Qt, вы также можете поставлять необходимые DLL-библиотеки Qt вместе с вашим приложением.

Что касается переносимости, с Qt это очень хорошо. Он должен компилироваться и работать как есть на Mac и Linux. (Возможные проблемы связаны с путями к файлам и тому подобное, но есть способы сделать это надежно и мобильно, если вы всегда используете API Qt.)

0 голосов
/ 18 сентября 2011

Я думаю, что здесь нужно рассмотреть несколько отдельных вопросов:

  1. Как заставить вашу программу Qt компилироваться на различных платформах

  2. Развертывание вашего Qtпрограмма на различных платформах (чтобы «обычные пользователи» могли устанавливать и запускать ее без особых хлопот)

  3. Настройка внешнего вида вашей программы Qt (чтобы она выглядела как «нативная»)насколько это возможно на различных платформах, на которых он работает)

(1) Это в значительной степени вопрос избежания специфичных для платформы API в вашей программе.Если вы придерживаетесь API-интерфейсов Qt и STL, все будет в порядке.Или, если вам нужно использовать что-то специфичное для платформы, вы можете сделать это через #ifdefs для каждой платформы или предоставив отдельные файлы .cpp для каждой платформы, но это хлопот, которого лучше избегать, если это возможно.

(2) Требуются несколько разные шаги для разных платформ;Есть некоторая документация об этом здесь .

(3) Может или не может быть важным для вас (это зависит от того, насколько вы заботитесь о том, выглядит ли ваша программа как нативное приложение на каждой платформе)).Если это важно, то я не думаю, что есть какой-либо способ вручную опробовать вашу программу на каждой целевой платформе и настраивать ее до тех пор, пока она не будет «подходящей» для этой платформы.Это помогает спроектировать код GUI, чтобы сделать как можно меньше жестко запрограммированных предположений (чтобы уровень QStyle Qt был свободен для «правильных вещей» в зависимости от текущей платформы).

0 голосов
/ 18 сентября 2011

При первом запуске пользовательский интерфейс выглядит ужасно на других системах.Qt - это, прежде всего, единая система создания пользовательского интерфейса;Между тем, в Windows меню является частью неклиентской области окна, на Mac оно находится за пределами окна (вместо этого в верхней части экрана), а в Linux это всего лишь один из элементов управления в клиентской области.Унифицировать это.И не начинайте меня с разнообразия виджетов в Linux.

Так что да, будет предпринято ненулевое портирование.

0 голосов
/ 18 сентября 2011

Я не согласен с Мэттом - если приложение не было специально разработано и написано с учетом переносимости, вам придется вносить множество изменений, чтобы заставить его компилироваться, работать и хорошо выглядеть на Linux и Mac.Qt облегчает этот процесс, но он не совсем безболезненный.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...