Будет ли у QT будущее в качестве инструментария GUI для MacOSX?
Сегодня я попытался реализовать поддержку нарисованного владельцем пункта меню в Какао и MacOSX 10.5
И то, что я обнаружил, было довольно страшно, когда я думал о QT, который я намеревался использовать для некоторых других проектов.
Если я вижу это правильно, у QT на MacOSX нет будущего, потому что весь Менеджер Внешний вид с исключением нескольких тривиальных функций полностью устарел в 10.5 (я даже не могу найти общедоступный URL) и даже цвет "Разработчик" list и цвет "константы" в NSColor помечены как нестабильные и не используются.
С этой политикой у Toolkit, подобного QT, не будет возможности отказаться от поддержки MacOSX, что имеет смысл для Apple более чем одним способом (помните, что Nokia является конкурентом). И Apple не заботилась об отказе от Carbon и Java тоже.
Так я что-то пропустил. Есть ли какой-нибудь менеджер внешнего вида Cocoa или какой-либо метод, который команда QT могла бы использовать разумный запасной вариант? Я боюсь, что в 10.7 или 10.8 внешний вид может быть совсем другим.
И, пожалуйста, всем, кто хочет закрыть этот вопрос как субъективный, пожалуйста, учтите, что я прошу техническую работу по решению этой проблемы. Это не дискуссия о хорошем или плохом, но если есть способ обойти это ограничение.
Для меня это серьезное деловое решение, которое может легко стоить десятки тысяч долларов, если оно сделано неправильно, и доверие к QT оказывается неудачным.
РЕДАКТИРОВАТЬ: Это ссылка, сообщающая мне, что даже системные цвета больше не поддерживаются. Доступ к системным цветам. И правильно, что изменение темы на графит не приводит к уведомлению об изменении списка цветов.
2 ответа
Я прекратил попытки заставить QT выглядеть нативно. Это никогда не сработает, потому что существует слишком много тонких поведений, которые ни один кроссплатформенный инструментарий никогда не сможет имитировать достаточно хорошо, чтобы обмануть пользователей. Если целью является нативное приложение, будет гораздо проще потратить немного дополнительного времени на создание нативных интерфейсов для платформ, которые вы хотите поддерживать.
То, что мешало мне сбросить QT, было незнание Xcode и Objective-C. Вы, вероятно, уже знаете это, но вы можете переименовать любой файл Objective-C (.m) в Xcode для компиляции в Objective-C++ (.mm). Это позволяет вам связать весь код C++, который вы хотите, именно там, где он вам нужен в вашем проекте.
Firefox находится в одной лодке, так как они в основном основаны на какао. Их реализация механизма темы OS X может быть замечена здесь.
- http://mxr.mozilla.org/mozilla2.0/source/widget/src/cocoa/nsNativeThemeCocoa.mm
- http://mxr.mozilla.org/mozilla2.0/source/widget/src/cocoa/nsNativeThemeCocoa.h
- http://mxr.mozilla.org/mozilla2.0/source/gfx/cairo/cairo/src/cairo-quartz-surface.c
Они полагаются на Cairo (API-интерфейс рисования, не зависящий от платформы), работающий над Quartz, для их рендеринга.