我怎样才能创建一个非常愚蠢的QWidget

How can I create a very dumb QWidget?

本文关键字:非常 一个 QWidget 创建      更新时间:2023-10-16

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

更改光标的代码不在 QWidget 中,因此没有 QWidget 更改可以解决问题。是QApplication从内部QApplication::dispatchEnterLeave(...)内部做到这一点。最终,qt_win_set_cursor完成了这项工作。

我不容易看到如何在不更改Qt源的情况下改变这种行为。

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

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