我怎么能创建一个非常愚蠢的QWidget?

时间:2012-06-25 09:36:51

标签: c++ qt

我需要一个“哑”QWidget,它不做任何事情,只提供HWND,可以作为孩子添加到其他QWidget。具体来说,它不应该尝试管理鼠标光标(这是我只是实例化QWidget的问题)。 (动机:我有一个就地激活的ActiveX控件,它有时会尝试更改鼠标光标,但QWidget会将其更改回默认值,因此它会闪烁)

1 个答案:

答案 0 :(得分:1)

执行游标更改的代码不在QWidget中,因此没有QWidget更改可以解决问题。从内部QApplication::dispatchEnterLeave(...)开始,它就是QApplication。最终,qt_win_set_cursor完成了这项工作。

我不太清楚如何在不改变Qt源的情况下改变这种行为。

我建议将报告作为Qt错误。 Qt应该检查在离开外来小部件时是否更改了本机光标,如果需要,则需要保留它。如果您提供实际修复问题的补丁,您将有更好的机会快速修复错误。

解决方法:为防止闪烁,请使用QApplication::setCursorOverride()设置应用程序范围的光标覆盖。这样可以修复闪烁,但不会修复无法更改光标的控件。