8

今天我尝试在 Cocoa 和 MacOSX 10.5 中实现所有者绘制的菜单项支持

当我想到我打算将其用于其他项目的 QT 时,我发现非常可怕。

如果我看对了,那么 MacOSX 上的 QT 就没有未来了,因为除了一些琐碎的功能之外,整个外观管理器在 10.5 中已完全弃用(我什至找不到公共 URL)甚至“开发人员”颜色list 和 NSColor 中的颜色“常量”被标记为不稳定,不要使用。

有了这个政策,像 QT 这样的工具包将别无选择,然后放弃对 MacOSX 的支持,这对 Apple 来说意义不止一种(记住诺基亚是竞争对手)。苹果也不关心放弃 Carbon 和 Java。

所以我想念什么。QT 团队是否有任何类型的 Cocoa 外观管理器或任何技术可以使用合理的后备?我担心在 10.7 或 10.8 中外观可能会有很大不同。

所有想以主观方式结束此问题的人请考虑我正在寻求解决此问题的技术工作。它不是关于好坏的讨论,而是是否有办法绕过这个限制。

对我来说,这是一个严肃的商业决策,如果做错了,很容易花费数万美元,而信任 QT 最终会失败。

编辑:这是一个链接,告诉我甚至不再支持 系统颜色 Accessing System Colors。正确的是,将主题更改为石墨不会导致颜色列表更改通知。

4

2 回答 2

3

我放弃了让 QT 看起来像原生的尝试。它永远不会起作用,因为有太多微妙的行为,没有跨平台工具包可以很好地模仿来欺骗用户。如果目标是原生应用程序,那么只需花一点额外时间为您想要支持的平台制作原生接口就会容易得多。

阻止我放弃 QT 的原因是不熟悉 Xcode 和 Objective-C。您可能已经知道这一点,但是您可以在 Xcode 中重命名任何 Objective-C (.m) 文件以编译为 Objective-C++ (.mm)。这使您可以在项目中需要的位置链接所需的所有 C++ 代码。

于 2010-08-17T19:18:20.480 回答
0

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

他们依靠坐在 Quartz 上的 Cairo(一个平台中立的绘图 API)来进行渲染。

于 2010-08-19T12:41:46.733 回答