0

解决了!

我为 Windows 进行了交叉编译,得到了我的提示:Windows 版本甚至在 main 之前就崩溃了——所以它必须是基本的分配问题。确实如此。我做了一个很大的静态分配,最近让它变得更大(程序需要的东西,不是可选的或临时的);将 array[size] 更改为 array=calloc(etc,etc) 和 bingo,windows 版本运行,OSX/Lion 内部的崩溃消失了,一切都运行正常了。

所以,吸取的教训:大的静态分配,不好——无论是 Windows 还是 OSX 都不能特别适应它们。


我得到一个绘画事件。我有一个独立的 QPixmap,我将在 QWidget 框架上进行绘制。在绘制事件调用中,我为 QPixmap 创建了一个绘制器,它位于类定义中。我设置颜色;刷子,钢笔。我填充,我画线。直角。渐变。文本。省略号。在 Snow Leopard 和 Leopard 下一切正常。在 Lion 10.7.anything 下,对同一 QPixmap 的任何drawText() 调用都会在 OSX 中的许多调用级别以及 com.apple.ColorSync 中的五个级别失败。不管我使用什么字体或大小。drawText() 和 drawStaticText() 都以同样的方式失败。

失败发生在任何尝试实际绘制 QPixmap 之前——它在 drawText() 的渲染过程中被炸毁。到那时我所做的就是用黑色填充(作品),用渐变填充(作品),绘制一些填充的矩形(作品)并绘制一个网格(作品),然后我去绘制这个文本。这不起作用,但会用 EXC_BAD_ACCESS SIGSEGV 炸毁主线程 (0)(在绘制事件期间进行绘图)。

据我所知,Qt 没有颜色管理。OSX 无法关闭与显示器的颜色同步。

目前,我已经对操作系统级别进行了特殊处理,如果在 Lion 下运行,则根本不绘制文本(在测试版中),但这是一个可怕的解决方法。

任何人都有任何想法,为什么 Apple 的 10.7 colorsync 会在 drawText() 上将其内裤打结成具有有效大小、文本、矩形和边界内绘图任务的完美香草 QPixmap?

4

0 回答 0