在成功将基于 Qt 的 Windows 应用程序移植到 OSX 后,我发现了一个问题。小部件的行为相当奇怪,没有抛出任何错误,并且与 Windows 上使用的代码完全相同。
小部件,例如 QTreeView 和 QListView,在单击时会在它们周围显示蓝色边框。当处于这种状态时,特定的小部件变得对点击没有响应。直到另一个小部件被点击,变成带有蓝色边框的“活动”。单击第一个小部件(非活动小部件)时,它会做出反应,但随后会出现蓝色边框并且不会对任何输入做出反应。
其他奇怪的行为是,当这些小部件从主应用程序窗口中弹出时,它们会停止渲染,就像您得到一个空白的浮动窗口一样。当停靠回主窗口时,它们会恢复正常。
由于我无法使用相同的代码在 Windows 上重现此行为,因此它必须是 OSX 上的 Qt 或 OSX 本身。
我不知道是什么原因造成的。
顺便说一句,我使用的是 Qt 5.0.2
我感谢任何和所有的帮助。
更多信息:我没有注意到这一点,但我得到了输出QBackingStore::flush() called with non-exposed window, behavior is undefined.
我不确定这是否是由于我的小部件在未停靠时从包含停靠小部件的地方消失了,或者是问题的根源