Будет ли у QT будущее в качестве инструментария GUI для MacOSX? - PullRequest
8 голосов
/ 07 августа 2010

Сегодня я попытался реализовать поддержку нарисованного владельцем пункта меню в Какао и MacOSX 10.5

И то, что я нашел, было довольно страшно, когда я думал о QT, который я намеревался использовать для некоторых других проектов.

Если я правильно понял, у QT на MacOSX нет будущего, потому что весь Менеджер внешнего вида с исключением нескольких тривиальных функций полностью устарел в 10.5 (я даже больше не могу найти публичный URL) и даже " «Цветовой список разработчика» и «постоянные цвета» в NSColor помечены как нестабильные и не используются.

С этой политикой у Toolkit, подобного QT, не будет возможности отказаться от поддержки MacOSX, что имеет смысл для Apple более чем одним способом (помните, что Nokia является конкурентом). И Apple не заботится об отказе от Carbon и Java тоже.

Так я что-то пропустил? Есть ли какой-нибудь менеджер внешнего вида Cocoa или какой-либо метод, который команда QT могла бы использовать разумный запасной вариант? Я боюсь, что в 10.7 или 10.8 внешний вид может сильно отличаться.

И, пожалуйста, всех людей, которые хотят закрыть этот вопрос как субъективный , пожалуйста, учтите, что я прошу техническую работу по решению этой проблемы Это не дискуссия о хорошем или плохом, но если есть способ обойти это ограничение.

Это серьезное деловое решение для меня, которое может легко стоить десятки тысяч долларов, если оно сделано неправильно, и доверие к QT оказывается неудачным.

EDIT: Это ссылка, сообщающая, что даже системные цвета больше не поддерживаются Доступ к системным цветам . И правильно, что изменение темы на графит не приводит к уведомлению об изменении списка цветов.

Ответы [ 2 ]

3 голосов
/ 17 августа 2010

Я бросил попытки заставить QT выглядеть нативно.Это никогда не сработает, потому что существует слишком много тонких поведений, которые ни один кроссплатформенный инструментарий никогда не сможет имитировать достаточно хорошо, чтобы обмануть пользователей.Если целью является нативное приложение, будет гораздо проще потратить немного дополнительного времени на создание нативных интерфейсов для платформ, которые вы хотите поддерживать.

То, что удерживало меня от сброса QT, было незнакомымс Xcode и Objective-C.Вы, вероятно, уже знаете это, но вы можете переименовать любой файл Objective-C (.m) в Xcode для компиляции в Objective-C ++ (.mm).Это позволяет вам связать весь код C ++, который вы хотите, именно там, где вам нужно в вашем проекте.

0 голосов
/ 19 августа 2010

Firefox несколько в одной лодке, так как они в основном на основе какао. Их реализация механизма темы OS X может быть замечена здесь.

  1. http://mxr.mozilla.org/mozilla2.0/source/widget/src/cocoa/nsNativeThemeCocoa.mm
  2. http://mxr.mozilla.org/mozilla2.0/source/widget/src/cocoa/nsNativeThemeCocoa.h
  3. http://mxr.mozilla.org/mozilla2.0/source/gfx/cairo/cairo/src/cairo-quartz-surface.c

Они полагаются на Cairo (API-интерфейс рисования, не зависящий от платформы), который работает над Quartz для выполнения рендеринга.

...