Qt winId() 强制 32 位值
Posted
技术标签:
【中文标题】Qt winId() 强制 32 位值【英文标题】:Qt winId() forcing 32bit values 【发布时间】:2010-01-13 02:16:49 【问题描述】:我正在尝试使用小部件的 winId 将来自外星应用程序 (python OCC) 的显示嵌入到 (Py)Qt 中。但是当我将它传递给 OCC 时,我得到一个溢出错误。 检查 winId qt 会返回其 4318283408,它大于 32 位数字。我运行 64 位(osx)并且两个库都是为 64 位编译的,但我有一种预感,OCC 仍然只喜欢 32 位数字。所以我的问题是,有没有办法控制Qt返回的winId的范围?
谢谢
亨里克
【问题讨论】:
【参考方案1】:查看 Qt 的源代码,在文件 src/gui/kernel/qwindowdefs.h
中,您会发现 WId
对于 64 位 OSX 的类型定义为 long
(对于 32 位 OSX,它是 int
)。 64 位 OSX 上的 long
长度为 8 个字节(或 64 位),因此 4318283408 是一个有效值。
如果要强制 winId() 返回 32 位值,则需要链接到 32 位版本的 Qt 库。
【讨论】:
嗯.. 我使用的两个库都是 64 位的,但我怀疑 OCC 的 64 位端口并不完全支持 64 位。希望 Qt 中可能有一些模糊的设置可以以某种方式修改 winId 吗?至少作为临时黑客以上是关于Qt winId() 强制 32 位值的主要内容,如果未能解决你的问题,请参考以下文章