Представлен (https://groups.google.com/forum/#!topic/wx-announce/EVbp4GbWCUY) выпуск кроссплатформенного тулкита wxWidgets 3.1.2 (http://wxwidgets.org/), позволяющего создавать графические интерфейсы для Linux, Windows, macOS, UNIX и мобильных платформ. wxWidgets 3.1 позиционируется как ветка для разработчиков, в которой развиваются новые возможности для следующего стабильного релиза 3.2.0. По сравнению с веткой 3.0 наблюдается ряд несовместимостей на уровне API и не гарантируется неизменность ABI между промежуточными выпусками 3.1.x.
Тулкит написан на языке С++ и распространяется под свободной лицензией wxWindows Library License (http://www.wxwidgets.org/about/licence), одобренной Фондом СПО и организацией OSI. Лицензия основана на LGPL и отличается позволением использования собственных условий для распространения производных работ в бинарной форме. Кроме разработки программ на Си/Си++ wxWidgets предоставляет биндинги для большинства популярных языков программирования, в том числе для PHP (http://wxphp.org/), Python (http://wxpython.org/), Perl (http://wxperl.sourceforge.net/) и Ruby (http://wxruby.rubyforge.org/). В отличие от других тулкитов, wxWidgets обеспечивает для приложения по-настоящему родной для целевой системы внешний вид и методы взаимодействия, благодаря использованию системных API, а не имитации GUI.Основные новшества wxWidgets 3.1.2:
- Предложен новый экспериментальный порт wxQt;
- Переработана поддержка OpenGL, улучшено использование новых версий OpenGL (3.2+);
- Реализована новая сборочная система на базе CMake. В сборочную систему добавлена поддержка новых компиляторов (MSVS 2017, g++ 8) и операционных систем (macOS 10.14);
- Добавлена поддержка событий для управляющих жестов, воспроизводимых при помощи мыши;
- В wxFont и wxGraphicsContext добавлена возможность указания нецелых значений при определении размера шрифтов и ширины светового пера;- В wxStaticBox реализована возможность назначения произвольных меток окнам;
- Улучшена поддержка экранов с высокой плотностью пикселей (High DPI);
- Добавлена поддержка сжатия LZMA и файлов ZIP 64;
- Представлены новые классы: wxActivityIndicator, wxAddRemoveCtrl,
wxAppProgressIndicator, wxNativeWindow, wxPowerResourceBlocker,
wxSecretStore;- Представлены новые методы: wxDataViewToggleRenderer::ShowAsRadio(), wxDateTime::
GetWeekBasedYear(), wxDisplay::GetPPI(), wxGrid::SetCornerLabelValue(),
wxHtmlEasyPrinting::SetPromptMode(), wxJoystickEvent::GetButtonOrdinal(),
wxListBox::GetTopItem(), wxProcess::Activate(), wxTextEntry::ForceUpper(), wxStandardPaths::GetUserDir(),
wxToolbook::EnablePage(), wxUIActionSimulator::Select();
- Внесены значительные улучшения в классы wxBusyInfo, wxDataViewCtrl,
wxNotificationMessage, wxStaticBox, wxStyledTextCtrl;- Обновлены все входящие в комплект сторонние библиотеки. Добавлена поддержка WebKit 2 и GStreamer 1.7;
- Внесены улучшения, связанные с поддержкой стандарта C++11.
URL: https://groups.google.com/forum/#!topic/wx-announce/EVbp4GbWCUY
Новость: https://www.opennet.me/opennews/art.shtml?num=49767
>В отличие от других тулкитов, wxWidgets обеспечивает для приложения по-настоящему родной для целевой системы внешний вид и методы взаимодействия, благодаря использованию системных API, а не имитации GUI.А qt что не обеспечивает?
Нет, Qt сам рисует интерфейс.
Неправда, Qt использует Cocoa под macOS, Win32 API под Windows. Oн cам рисует под Linux, т.к. там он сам системный API.
> Qt использует Cocoa под macOS, Win32 API под Windows. Oн cам рисует под Linux, т.к. там он сам системный API.может еще поправите исходный код Qt, чтобы то что вы сказали было правдой?
Почитайте блин код Qt, как виджеты рисуются с помощью Qt Style.
Там просто стили с закосом под "native", но никаких native компонентов
типа кнопок, надписей и т.д. естественно не используется.
В таком случае зачем поносить GTK? Он ведь точно так же работает. Его Cairo на винде рисует Win32 API, но сам.
Наверное неосиляторы тему "win32" не могут поставить и судят по уродливой Adwaita (она выглядит хорошо только в гноме)
А кто здесь, кроме вас, упомянул GTK?
>В таком случае зачем поносить GTK? Он ведь точно так же работает.Традиция.
> В таком случае зачем поносить GTK? Он ведь точно так же работает.wxWidgets использует GTK под GNU/Linux .
а в случае WinAPI wxWidgets НЕ использует GTK
А ведь могбы через вайн под линуксом и винапи подтянуть.
А смысл? На сколько помню wine рисует при помощи gtk. Т.е. на то же бы и вышли, но с большими и бесполезными граблями. Имхо libwine имеет смысл юзать для каких-нибудь совсем хитрых кейсов совместимости, вроде единых плагинов без перекомпиляции.
В Haiku используется wxQt
> Почитайте блин код Qt, как виджеты рисуются с помощью Qt Style.Сам то читал?
Qt использует win API для рисования окон. Это однозначно.
Кончилось то время когда можно было в ваидеопамять рисовать.
сейчас HAL не пропустит. Есть бакенды которые помогают рисовать, но вывод все равно через win api.
> Сам то читал?
> Qt использует win API для рисования окон. Это однозначно.Так спор не подсистеме рисования линий и треугольников.
А а использовании высокоуровневых компонент типа кнопок, полей ввода текста и т.д.
При чем здесь как Qt видеокарточкой управляет?
Ну строго говоря, функции GDI (или даже поддержку OpenGL), через которые рисуется Qt тоже можно назвать частью WinAPI. Но да, картинку формирует Qt сам.
>Там просто стили с закосом под "native", но никаких native компонентов типа кнопок, надписей и т.д. естественно не используется.А в Linux в принципе нет этих native компонентов. Linux старается следовать стандартам POSIX, но разработчики этих стандартов так и не родили API POSIX для гуя.
> nativeНе забывайте, что это слово переводится как "туземный".
туземный = местный
вхвиджетс четкий закос под местного.
Мне кажется его вообще тяжко стандартизовать. Во-первых, слишком шустро развивается, во-вторых, не ясно, через что рисовать. Собственно, и в винде прибитый гвоздями гуй в WinAPI уже походу моветон, а для совместимости там ещё долго болтаться будет.
> Qt использует Cocoa под macOSТак, да не совсем. Для простых виджетов, вроде кнопок, используется родной API. А сложные, вроде QTreeView, похоже сам рисует. Приходится QSS тьюнить, чтоб смотрелось породнее. И тулбар Qt рисует похоже сам, тоже настраивать потребовалось.
Ссылка http://doc.qt.io/archives/qt-4.8/qpushbutton.html наследуется от QPaintDevice там что нет он рисуется похожим на нативную кнопку.
все просто. берите spy++ и наведите на Qt window и все станет ястно.
Qt может и так, и так: по-умолчанию, он действительно рисует виджеты сам, т.к. это оказалось быстрее. Однако может и создавать окна со своим HWND, если настроить. См. детальнее про Alien Widgets (http://blog.qt.io/blog/2007/08/09/qt-invaded-by-aliens-the-e.../).
Рисует сам, но обеспечивает родной внешний вид (в том числе, в gtk-средах). В отличие от gtk, который не-gtk-среды, в общем-то, игнорирует.
>В отличие от других тулкитов, wxWidgets обеспечивает для приложения по-настоящему родной для целевой системы внешний вид и методы взаимодействия, благодаря использованию системных API, а не имитации GUI.Эта фраза для Linux смысла не имеет. Что считать родной внешний вид? Qt, Gtk или Tk? Родным для иксов является приложения на чистом Xlib, но про него можно забыть - мало кто захочет на нем сидеть.
Более того. Может я не умею его готовить, но внешний вид не похож ни на что из перечисленного. Например, pgAdmin3.
Для всех Linux у них wxGTK+ так что GTK ссылка https://www.wxwidgets.org/docs/faq/gtk/
>>В отличие от других тулкитов, wxWidgets обеспечивает для приложения по-настоящему родной для целевой системы внешний вид и методы взаимодействия, благодаря использованию системных API, а не имитации GUI.
> Эта фраза для Linux смысла не имеет. Что считать родной внешний вид?
> Qt, Gtk или Tk? Родным для иксов является приложения на чистом
> Xlib, но про него можно забыть - мало кто захочет на
> нем сидеть.Если родной в смысле близкий по духу, такой родной и посконный, тогда смысл имеет.
Но на самом деле я тоже хочу знать что автор текста подразумевал под этой фразой.
Думаю, имелась в виду пара Винда и Макось.and unlike other cross-platform toolkits, wxWidgets gives applications a truly native look and feel because it uses the platform's native API rather than emulating the GUI.
> Думаю, имелась в виду пара Винда и Макось. and unlike other cross-platform toolkits, wxWidgets gives applications a truly native look and feel because it uses the platform's native API rather than emulating the GUI.Это не смешно.
> Это не смешно....как и его совместимость 3.1->3.0.
> wxWidgets обеспечивает для приложения по-настоящему родной для целевой системы внешний видТо есть у меня вся система с KDE5 выглядит как Audacity? Не знал...
Только если вы пересоберете Audacity с wxQt.
А так в Линуксах "родным" считается GTK-порт.
> А так в Линуксах "родным" считается GTK-порт.Наглое ЛПП
Нет, наоборот Audacity выглядит как родной, а kde5 со всеми своими приложениями как не родные.
А вы KDE 5 в Гноме пытаетесь запускать?
Так, стоп. Совсем запутали. Audacity на чем написана? На QT? Ведь KDE юзает QT, так?
Quick Time никто здесь не юзает.Audacity - программа на wxWidgets.
KDE - DE, рисует графику с Qt.
> Audacity - программа на wxWidgets.Собранная для Линуксов, соответственно, на wxGTK.
Спасибо
Одна беда только. Если с wxGTK2 и Win32 есть хоть какая-то корреляция в верстке приложений и контролах, что позволяет сделать разумный вид приложений и в Linux и в Win... то с wxGTK3 дизайн полностью разваливается... нужно прилагать особые усилия при разработке приложений или их портировании. В принципе всем бы устроил wxGTK2 если б не устаревал и компоненты wxGenericXXX были более функциональны и безглючны... Порт wxQt не пробовал, но кажется большим оверхедом. Очень хочется wxAndroid тк MoSync помер.... но что-то там нет движения.
> то с wxGTK3 дизайн полностью разваливается...Обратная сторона поддержки HiDPI, надо понимать.
>wxQtДжва года ждал!