【问题标题】:Qt winId() forcing 32bit valuesQt winId() 强制 32 位值
【发布时间】:2010-01-13 02:16:49
【问题描述】:

我正在尝试使用小部件的 winId 将来自外星应用程序 (python OCC) 的显示嵌入到 (Py)Qt 中。但是当我将它传递给 OCC 时,我得到一个溢出错误。 检查 winId qt 会返回其 4318283408,它大于 32 位数字。我运行 64 位(osx)并且两个库都是为 64 位编译的,但我有一种预感,OCC 仍然只喜欢 32 位数字。所以我的问题是,有没有办法控制Qt返回的winId的范围?

谢谢

亨里克

【问题讨论】:

    标签: python qt pyqt4


    【解决方案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 吗?至少作为临时黑客
    猜你喜欢
    • 1970-01-01
    • 2011-06-26
    • 2011-11-17
    • 1970-01-01
    • 1970-01-01
    • 2017-01-08
    • 2011-01-24
    • 1970-01-01
    • 2019-07-29
    相关资源
    最近更新 更多