Если я использую QT Для Windows, будет мое выполнение приложения, большое на Linux/Mac/Windows?

Я нахожусь под впечатлениями, что Python работает в Triforce гладко. Программа, которая работает в Windows, будет работать в Linux. Это чувство корректно?

Однако если я создам свое приложение в QT Для Windows, то это будет работать безупречно в Linux/Mac также?

Спасибо.

5
задан Sergio Tapia 9 January 2010 в 22:40
поделиться

6 ответов

Да. Нет. Может быть. Смотрите также: Java и «Пишите один раз, везем где угодно».

Макет файловой системы, внешние утилиты, все, что вы можете сделать с такими вещами, как иконки дока, поведение персонажей, поведению, это и многое другое - это области, которые вы можете столкнуться с некоторыми проблемами.

Использование Qt и Python и устойчиво избегая ничего, что кажется привязанным к библиотекам или поведению Windows, когда это возможно, сделает запуск приложения на Mac и Linux намного проще, но для любого нетривиального приложения, в первый раз, когда кто-то пытается его Это будет взорваться в их лице.

Но благодаря тщательному выбору рамок и библиотек, создание поперечной платформы приложений будет гораздо больше похоже на фиксацию ошибок, чем традиционный «портирующий».

8
ответ дан 18 December 2019 в 10:44
поделиться

Обычно - до тех пор пока вы не используете код, который не покрыт классами Qt - да.

У меня есть несколько раз только что перекомпилированных приложений, которые я написал в Linux(64bit) под Windows, и наоборот. Это работает для меня каждый раз.

В зависимости от ваших потребностей, вы можете также найти проблемы с компилятором, но я уверен, что вы знаете, как работать с ними. Другие люди упоминали о некоторых проблемах, которые вам следует искать, просто прочитайте другие сообщения в этом вопросе.

1
ответ дан 18 December 2019 в 10:44
поделиться

Это может хорошо работать, но он возьмет некоторое тестирование, и, конечно, Qt только обрабатывает мобильность GUI, а не множество других вещей, которые могут вызвать проблемы с переносимостью.

Приложения Qt обычно не вписываются в очень хорошо в MacO, потому что у них нет поддержки AppleScript по умолчанию и не обязательно имеет правильные клавиатуры. Но если вы делаете работу, чтобы исправить эти проблемы, они работают, но не красиво. На Mac намного лучше построить родной интерфейс. Если это встроенное приложение, QT, вероятно, в порядке, но если он продается, вы не будете делать много продаж и создаду себе некоторые хлопоты.

0
ответ дан 18 December 2019 в 10:44
поделиться

Да. Код, который вы пишете с помощью QT, будут работать на Windows, Mac, Linux / X11, встроенные Linux, Windows CE и Symbian без каких-либо изменений. Вы можете взять посмотреть здесь .

2
ответ дан 18 December 2019 в 10:44
поделиться

Как упомянутые другие плакаты, ключевой проблемой убедился, что вы никогда не прикасаетесь к различным неперекрещевым API. Или даже даже другой API без Qt CrossPlatform, если вы используете Qt, вы должны позаботиться об этом, это всеобъемлющие рамки, и по большей части прилипания к Qt проще, чем идти на что-либо еще. Есть несколько приятных преимуществ, поскольку основные примитивы в вашей программе будут работать повсюду повсюду. (i.e. QString в вашем сетевом коде будет совпадает с QString в вашем интерфейсном коде.) Портативность-мудрый, если вы остаетесь в пределах QT API, он должен работать на нескольких платформах.

Там будет область, в которых вам может потребоваться вызвать некоторые функции Qt, которые предоставляют определенные кроссплатформенные настройки более важные для некоторых платформ, чем другие (E.G. Dock Icons), и вы не будете немедленно иметь отполированное приложение на всех трех платформах. Но в целом вы должны оставаться очень близко к приложению, которое компилирует и работает на всех трех. (Попробуйте использовать QMake или аналогичную систему сборки, поскольку процесс сборки для приложений QT варьируется в зависимости от платформы. Разные флаги и т. Д.)

Есть некоторые странные проблемы, которые придумывают при смешивании Qt с другими API В частности, каким образом Windows Locks GL Contexts отличается от способа OS X и Linux, поэтому, если вы намерены использовать OpenGL с несколькими потоками, попробуйте периодически скомпилировать на других платформах, чтобы убедиться, что нет полностью полностью разрушено. Это также быстро укажет районы, в которых вы могли бы непреднамеренно использовали непереходную систему API.

Я использовал Qt с командой, чтобы построить многопоточную трехмерную многопользовательную сетевую игру в реальном времени (читаю: нетривиальное приложение, которое полностью использовало много многих областей Qt), и мы были не только взорваны Эффективность способности QT поддерживает несколько платформ. (Мы разработали на OS X во время нацеливания Windows, и я регулярно убедившись, что он все еще бегал на Linux.) Мы столкнулись с несколькими конкретными функциями платформы, почти все из которых возникли от использования apies apits, такие как opengl. (Который должен действительно сказать вам кое-что, что OpenGL была скорее борьбой, чтобы использовать перекрестную платформу, чем Qt была.)

В конце опыта мы были довольны тем, как мало времени нам нужно было потратить на работу с функциями платформы Отказ Было удивительно, насколько хорошо мы могли бы сделать приложение GUI для Windows, данные почти ни одна из команды фактически использовала ее как первичную платформу разработки через проект.

Но тестируйте рано и часто. Я не думаю, что ваш подход написания целого приложения, а затем тестирование - хорошая идея. Это возможно с Qt, но в маловероятно, если у вас нет опыта, написания портативного кода и / или новых для Qt.

5
ответ дан 18 December 2019 в 10:44
поделиться

Как говорили другие, все, что делается с помощью Qt-функциональности, скорее всего, будет работать довольно безупречно, КОГДА вы не используете платформенно-специфическую функциональность qt.

Не так уж и много (большинство из них имеет отношение к Windows-менеджерам), но некоторые вещи могут не работать на других системах. Но такие вещи, несомненно, упоминаются в документации Qt.

Все еще есть вещи, которые не могут быть сделаны с помощью Qt, так что вам придется сделать это самостоятельно, используя простой Python.... Да, "Python" сам по себе платформонезависим (ну, он должен), но есть много других вещей, которые вовлечены ... ну, в основном, операционная система. И как операционная система реагирует на это, вам просто придётся выяснить самому, протестировав приложение на всех целевых операционных системах.

Недавно я написал довольно простое GUI-приложение, хотя на Windows оно работало небезупречно, на Linux оно не работало, потому что на Linux Python интерпретировал файлы, закодированные в юникоде, иначе, чем на Windows. Дополнительно небольшой скрипт, который должен был возвращать имя хоста машины, что он делал на Windows, возвращал только "localhost" на Linux, что было явно не то, что я хотел.

0
ответ дан 18 December 2019 в 10:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: