我需要一个“哑”QWidget
,它不做任何事情,只提供HWND
,可以作为孩子添加到其他QWidget
。具体来说,它不应该尝试管理鼠标光标(这是我只是实例化QWidget
的问题)。 (动机:我有一个就地激活的ActiveX控件,它有时会尝试更改鼠标光标,但QWidget会将其更改回默认值,因此它会闪烁)
答案 0 :(得分:1)
执行游标更改的代码不在QWidget中,因此没有QWidget更改可以解决问题。从内部QApplication::dispatchEnterLeave(...)
开始,它就是QApplication。最终,qt_win_set_cursor
完成了这项工作。
我不太清楚如何在不改变Qt源的情况下改变这种行为。
我建议将报告作为Qt错误。 Qt应该检查在离开外来小部件时是否更改了本机光标,如果需要,则需要保留它。如果您提供实际修复问题的补丁,您将有更好的机会快速修复错误。
解决方法:为防止闪烁,请使用QApplication::setCursorOverride()
设置应用程序范围的光标覆盖。这样可以修复闪烁,但不会修复无法更改光标的控件。