gpt4 book ai didi

c++ - 鼠标悬停在 Qt 中的透明度

转载 作者:搜寻专家 更新时间:2023-10-31 00:49:46 25 4
gpt4 key购买 nike

我正在尝试使用 Qt4.5 在 Qt/C++ 中创建一个应用程序,并希望任何事件窗口在鼠标悬停事件上更改不透明度...

据我了解,Qt 中没有明确的鼠标悬停事件。

但是,我通过在声明我的主窗口的类中重新实现 QWidget 的 mousemoveevent() 获得了基本功能。但是只要鼠标经过我在其中创建的任何组框,就不会调用主窗口的 mousemoveevent(可以理解,因为 QGroupbox 有自己的 mousemoveevent 重新实现)。

因此,作为一种廉价的解决方法,我仍在使用我的主窗口的 mousemoveevent,但查询全局鼠标位置并基于主窗口的 (x,y) 位置(通过 ->pos() 获得)和窗口大小(-> 大小 -> rHeight 和 rWidth),我检查鼠标是否在主窗口区域的边界内并因此更改不透明度。

这取得了非常有限的成功。右边框工作正常,左边框提前 4 个像素更改不透明度。顶部不起作用(大概是因为鼠标经过菜单栏和标题栏),底部变化太早了。

我想创建一个空的容器 QWidget 类,然后将所有其余的都放在那里,但我觉得它仍然不能解决基本小部件没有接收到 mousemoveevent 的大问题,如果它已经在 child 中实现的话小部件。

请建议我在我的方法中所做的任何更正/错误或实现此目的的任何替代方法。

附注我怀疑这很重要,但我正在使用 Qt Creator IDE,而不是将 Qt 集成到 VS2008 中(无论如何都是相同的类 - 虽然编译器不同,mingw)

最佳答案

为您的每个子部件安装事件过滤器可能会成功。这将允许您的主窗口接收子事件,例如来自您的组框的事件。您可以找到示例代码 here .

关于c++ - 鼠标悬停在 Qt 中的透明度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/770728/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com