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

Как Qt-приложения выглядят и кажутся родными под Windows?

Мне нужно перенести одно из моих приложений Mac в Windows. Приложение Mac использует пользовательские интерфейсы Cocoa/Appkit для пользовательского интерфейса. Пользовательский интерфейс представляет собой код Obj-C, а функциональность основного приложения - переносимый код на С++.

Теперь я ищу способ перенести приложение в Windows и заставить его выглядеть и чувствовать себя родным для пользователей Windows. Мой выбор - Microsoft MFC и Qt framework. Хотя я уверен, что MFC-приложения имеют собственный внешний вид, я помню, что MFC-кодирование самой структуры ужасно. Я взглянул на Qt и, как и на перспективу разработчиков.

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

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

4b9b3361

Ответ 1

Вы можете легко изменить стиль приложения Qt. В Windows и Mac стиль по умолчанию использует собственные функции для рисования окон, элементов управления и т.п.

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

Я настоятельно рекомендую вам не использовать MFC, вы пожалеете об этом (особенно если вы никогда не работали с родным API Win32). Это полная противоположность Qt относительно гибкости и простоты использования.

Ответ 2

Как вы можете прочитать на doc.qt.io:

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

Посмотрите Галерея виджета Qt:

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

Вам может быть интересна презентация под названием Как сделать приложение Qt Look Inative:

Qt использует API-интерфейсы собственного стиля на каждой поддерживаемой платформе, однако там некоторые дополнительные трюки, которые вы можете использовать, чтобы убедиться, что ваш Qt-based приложение выглядит, чувствует и ведет себя лучше. Эта презентация будет используйте примеры, подсказки и тики, чтобы помочь вам сделать приложения отлично смотрятся на всех платформах.

Ответ 3

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

Ответ 4

Они выглядят немного, и они не чувствуют себя много.

Особенно, если вы разрабатываете приложение с учетом окон (например, с cocoa). Я еще не видел ленты (есть коммерческий сторонний клон) и синий/черный стиль MFC или список в виде сгруппированных значков.

К сожалению, WxWidgets также очень уродлив для программирования. Лучше тогда MFC наверняка. Осталось только два варианта, если вы хотите создать приложение для реальных приложений, MFC (если вам нужно быстро и мало) или .NET(если вам не нужна скорость).

У предыдущей компании был уровень 50000 LOC поверх MFC, который был необходим, чтобы иметь возможность запрограммировать эту структуру 1992 года немного более комфортно). К сожалению, я не знаю ничего доступного на рынке, который делает то же самое.

Вопрос заключается в том, что ваши клиенты действительно ценят внешний вид, который становится фактором продаж или нет. Теперь я использую QT, потому что это достаточно хорошо.

Ответ 5

Нет, они НЕ. Он закрывается, но элементы управления выглядят неродными. То, что люди имеют в виду, это то, что он использует API Win32 для рендеринга элементов управления, аналогичных тому, как Windows создает собственные элементы управления, поэтому производительность должна быть сопоставимой.

Только определенные для Windows фреймворки, такие как .NET Windows Forms, используют собственные встроенные элементы управления Win32 для общих элементов пользовательского интерфейса.