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

Какой из них, если таковой имеется, обеспечивает внешний вид Windows: GTK +, wxWidgets, Qt, FLTK?

Мне нужно написать приложение, которое будет визуально неотличимо от того, что написано для Windows XP/Vista/7, используя все, что приходит по умолчанию с самой современной Visual Studio. Но я разрабатываю MinGW и Vim (на С++).

В частности, я хочу, чтобы следующие элементы управления были родными в трех вышеупомянутых версиях Windows: форма хром, кнопки, флажки, меню, комбинированные поля, индикаторы выполнения, полосы прокрутки, богатые текстовые поля, Этого будет достаточно для меня.

Я знаю, что если вы загружаете GdiPlus и другие вещи, такие как riched32.dll по мере необходимости, и используете Windows API для создания элементов управления, тогда ОС заменит свою версию GdiPlus или другой библиотеки, поэтому она будет выглядеть как элементы стиля XP на XP, Vista на Vista и т.д.

Но я не хочу использовать простой Windows API, потому что даже получение шрифта по умолчанию занимает половину страницы кода и похожие истории, что я хочу делать. Поэтому я хотел бы использовать инструментарий.

wxWidgets, Qt, GTK +, FLTK кажутся наиболее широко используемыми. Но все они кросс-платформенные. Я использовал кросс-платформенные приложения, и у многих из них есть внешние элементы управления графическим интерфейсом (я называю их виджетами). Поэтому мой вопрос: , какой из этих наборов инструментов можно сделать для создания настоящих интуитивно понятных элементов управления пользовательского интерфейса, перечисленных выше, правильно отображаемых в трех версиях MSWin, перечисленных выше?

Я набрал каждый из них + "окна" в Google Images, но это трудно сказать, за исключением того, что FLTK, вероятно, не может этого сделать. Многие из вас должны знать ответ от верхней части головы...

4b9b3361

Ответ 1

Я не буду говорить о ФЛТК, потому что я этого не знаю.

  • wxWidgets использует встроенный инструментарий платформы (GTK для Linux, Win32 GUI API для Windows, Cocoa для MacOS X).
  • GTK использует API тем для имитации внешнего вида платформы (пользовательский движок тем для GTK2, движок на основе CSS для GTK3).
  • Qt использует стили для имитации внешнего вида платформы.

API-интерфейс wxWidgets довольно уродлив из моего собственного опыта, потому что у него было слишком много методов, просто доступных на одной или другой платформе, делающих вещи непереносимыми, если вы не обойдете их. В отличие от GTK+ и Qt, он также добавляет свой собственный слой ошибок над набором инструментов, который он использует в качестве бэкэнда. Тем не менее, он изо всех сил старается иметь внешний вид платформы, так как использует собственный инструментарий.

GTK+ 3 по-прежнему имеет некоторые неровные края в Windows, которые он официально поддерживает с GTK+ 3.6. Проект GTK+ делегирует проекту MSYS2 дистрибутив двоичных файлов Windows. Поскольку вы уже используете MinGW, это примерно такая же среда. У них хорошие C++ связки с GTKmm. Тем не менее, вам может потребоваться определенная работа для того, чтобы настроить темы для вашей версии Windows.

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

Подводя итог, есть только 2 подхода:

  • наборы инструментов, которые предоставляют свои собственные виджеты и пытаются выглядеть как родная платформа, предоставляя тематику (GTK+ и Qt)
  • наборы инструментов, которые используют собственные виджеты, но скрывают свои API за слоем абстракции (wxWidgets)

У обоих есть свои плюсы и минусы.

Ответ 2

Детали реализации в стороне, философия wxWidgets существует и всегда была, чтобы выглядеть как можно более естественным способом. Мы, разработчики wxWidgets, не всегда стремимся к тому, чтобы выглядеть неотличимо от родных приложений, но мы всегда стремимся это делать. AFAIK - это не такая важная цель для Qt и, определенно, не для GTK +, поэтому в моем (очевидно, предвзятом) мнении wxWidgets - ваш лучший выбор, если вы серьезно относитесь к тому, чтобы предоставлять лучший опыт для ваших пользователей, особенно в OS X.

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

Ответ 4

Я использовал java для родной кросс-платформенной без изменения кода, использовал c/С++ wxwidgets для исключительно кросс-платформенной, если вы хотите перейти на небольшую производительность и автономный исполняемый файл, использовать c/С++ winapi для windows и x11 для gnu linux встроенная платформа и терминальная консоль, использовали python для консоли и платформы для скриптинга, если вы хотите, чтобы ваше программное обеспечение обновлялось быстро, и использовали сборку для простой простой консоли. И иногда я объединил их всех с общей библиотекой .dll на windows и .so на gnu linux. И мне понравилось делать для сравнительной производительности при программировании с небольшими требованиями к оборудованию.