Какой из них, если таковой имеется, обеспечивает внешний вид 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, вероятно, не может этого сделать. Многие из вас должны знать ответ от верхней части головы...
Ответы
Ответ 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 (хотя текстовый контроль недоступен изначально под другими платформами, хотя).
Ответ 3
IUP - библиотека Portable User Interface использует родные виджеты, C API и привязки Lua.
Ответ 4
Я использовал java для родной кросс-платформенной без изменения кода, использовал c/С++ wxwidgets для исключительно кросс-платформенной, если вы хотите перейти на небольшую производительность и автономный исполняемый файл, использовать c/С++ winapi для windows и x11 для gnu linux встроенная платформа и терминальная консоль, использовали python для консоли и платформы для скриптинга, если вы хотите, чтобы ваше программное обеспечение обновлялось быстро, и использовали сборку для простой простой консоли. И иногда я объединил их всех с общей библиотекой .dll на windows и .so на gnu linux. И мне понравилось делать для сравнительной производительности при программировании с небольшими требованиями к оборудованию.