Думаю, стоит изучить собственный оконный слой на каждой платформе, на которую вы нацелены.
Как таковой:
- какао
Какао - это родной оконный слой Mac OS X. Это API Objective-C, но его нетрудно освоить, и его легко взаимодействовать с C или C ++.
- Win32 API
Windows API - это C API, который реализует набор собственных виджетов Windows.
- GTK +
Мир Unix / Linux более сложен, так как возможно иметь приложения, написанные для совершенно разных реализаций набора виджетов. Вам нужно выбрать набор виджетов, используемый рабочим столом вашей целевой среды по умолчанию: если вы ориентируетесь на Ubuntu, то GTK + (2) - это API-интерфейс, предназначенный для доступа к «родному» набору виджетов рабочих столов Unity.
Мне лично не нравится QT, потому что они изобрели свой собственный мета-компилятор, делая код QT (по иронии судьбы) трудным для переноса в не QT-среды. QT, однако, представляет абстракцию собственного набора виджетов, где это возможно.
wxWidgets - это удобный API-оболочка для использования, поскольку он уже охватывает Win32Api, Cocoa api и GTK + на соответствующих платформах. Однако я избегал его использования, поскольку Wx основан на Microsoft MFC - несколько устаревшей платформе Document / View C ++, и я хотел понять базовые платформы.
- Отредактировано с некоторыми исправлениями в QT.