qt – 如果鼠标在其外部单击,则关闭窗口小部件窗口

这有点像鸡和蛋的问题.当鼠标点击外面时,我希望我的小部件窗口关闭.据我了解,我的小部件没有鼠标事件,因为在它之外发生了点击.有一个SetFocus插槽,但其对应或焦点损失在哪里?我没有为我的班级调用“focusOutEvent”.

我的窗口小部件窗口是一个窗口小部件的子窗口,它总是显示在我的主窗口上,它是一个“Qt :: ToolTip”,所以我认为可能会出现一些问题.有什么方法吗?

我的目标:我有一个自定义工具栏小部件,其上的按钮可能有“下拉”小部件.这些下拉小部件没有标准的窗口框架.我不希望他们从主窗口“窃取”字幕焦点,我希望他们一旦用户点击他们所在地区以外的屏幕上的ANYWHERE就会消失.我很难找到一个在Qt上没有妥协的策略来完成这项工作.

我错过了什么吗? (打赌我).

最佳答案
我用了:

setWindowFlags(Qt::FramelessWindowHint | Qt::Popup);

这似乎在OSX和Windows上运行良好.我的窗口显示正确,不会从我主窗口的标题中窃取焦点,并且只要我点击它外面就会正确调用焦点丢失事件.

转载注明原文:qt – 如果鼠标在其外部单击,则关闭窗口小部件窗口 - 代码日志