независимый от платформы графический интерфейс - PullRequest
7 голосов
/ 19 мая 2011

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

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

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

Ответы [ 6 ]

11 голосов
/ 19 мая 2011

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

5 голосов
/ 19 мая 2011

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

http://www.wxwidgets.org/

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

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

3 голосов
/ 19 мая 2011

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

1 голос
/ 19 мая 2011

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

Как таковой:

  • какао
    Какао - это родной оконный слой 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.
1 голос
/ 19 мая 2011

Qt выглядит как вариант.Но если вы хотите использовать Windows API, он не будет переносимым.Qt в Windows будет использовать такие вещи, как CreateWindow и т. Д., Но вы не будете.Например, IDA дизассемблера была недавно переписана в Qt и теперь кроссплатформенная.

0 голосов
/ 19 мая 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...