Хорошо, что вы думаете о переносимости на ранних этапах - гораздо сложнее «запутаться» после факта.
Существуют различные кроссплатформенные наборы, но имхо все они немного не обеспечивают "нативный" внешний вид на всех поддерживаемых платформах. На Mac (что я использую) сторонники таких комплектов всегда хотят упомянуть, что они используют нативные элементы управления. Это хорошее начало, но это не весь путь. Другие вопросы, которые рассматриваются в Руководства Apple по человеческому интерфейсу , включают в себя то, как должны быть расположены элементы управления, как должны быть указаны метки кнопок, какие стандартные сочетания клавиш должны использоваться и т. Д.
Даже Microsoft пришлось узнать трудный путь об опасностях попыток написать кроссплатформенный графический интерфейс с неудачным Word 6.0 для Mac.
ИМХО, лучшим подходом является использование дизайна MVC с уровнем модели, написанным на стандартном, переносимом C ++, и уровнями представления и контроллера с использованием собственного набора инструментов для каждой платформы. В Mac-версии Carbon и C ++ всегда были интересной опцией, которая больше не поддерживается, поэтому вы захотите использовать Cocoa, используя Objective-C в представлении и Objective-C ++ в ваших контроллерах для преодоления языкового разрыва. Ваша версия для Windows также может скомпилировать вашу модель как «управляемый C ++» и использовать любой язык .NET для контроллеров и представлений.