независимый от платформы GUI

Я хочу сделать GUI для моего приложения. Он должен работать на нескольких платформах. Я хочу, чтобы большая часть кода была переносимой для всех ОС (unix, windows, MAC).

GTK и GLib выглядят как хорошее решение. Я тоже хочу использовать native APIs

Как это все делать??

6 ответов


Qt может быть хорошо для этого.


Мне нравится WxWidgets, очень проста в использовании. Он имеет привязки для нескольких языков, и вы можете легко смешать его реализацию C++ с Win32 API (C-код).

http://www.wxwidgets.org/

более легкая альтернатива-FLTK

http://www.fltk.org/index.php


вам придется реализовать PAL(уровень абстракции платформы).
Этот слой должен предоставлять абстракцию над фактическими вызовами платформы, предоставляя интерфейсы,которые не зависят от платформы. Как только вы перейдете на другую платформу, только PAL должен быть реализован для этой конкретной платформы, а остальная часть приложения может использоваться как есть.


Qt кажется вариантом. Но если вы хотите использовать Windows API, он не будет переносимым. Qt в Windows будет использовать такие вещи, как CreateWindow и т. д. но ты этого не сделаешь. Е. Г. дизассемблер Ида недавно был переписан на Qt и теперь кросс-платформенный.


Я думаю, что стоит изучить родной оконный слой на каждой платформе, которую вы нацеливаете.

такие как:

  • какао
    Какао является родной Mac OS X оконный слой. Его Objective-C api, но его не трудно узнать, и его легко взаимодействовать с C или c++.
  • Win32 API
    API Windows-это API C, реализующий собственный виджет windows набор.
  • GTK+
    Мир Unix / Linux сложнее, так как его можно иметь приложения, написанные против совершенно разных реализаций набора виджетов. Вам нужно выбрать набор виджетов, используемый целевыми средами рабочий стол по умолчанию: если вы ориентируетесь на Ubuntu, то GTK+ (2) - это API для доступа к "родному" набору виджетов Unity Desktop.

Мне лично не нравится QT, поскольку они изобрели свой собственный мета-компилятор, делая код QT (по иронии судьбы) трудно переносить в среды, отличные от QT. QT, однако, представляет абстракцию собственного набора виджетов, где это возможно.

wxWidgets-удобный API-интерфейс для использования, поскольку он уже обертывает Win32Api, Cocoa api и GTK+ на соответствующих платформах. Однако я избегал его использования, поскольку Wx основан на Microsoft MFC - несколько устаревшей структуре документа/представления C++, и я хотел понять базовые платформы.


  • редактировать с некоторыми исправлениями wrt QT.

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