Qt中实现悬浮窗口

前言

label控件实现

首先,label控件自身没有判断鼠标是否指向的功能,所以需要新建自己的label类,继承自QLabel,然后重载enterEvent和leaveEvent(QEvent * event)函数。然后把label控件提升为这个自己的label类。

继承自QLabel的label类h文件实现:

这里大部分代码都是qt自动生成的,除了鼠标事件函数重载这个两个函数和两个信 。

继承自QLabel的label类cpp文件实现:

注意:

这句话一定要有,是用来开启跟踪鼠标功能的。
还有必须要在鼠标进入和离开事件中发送信 ,这里也可以改成一个信 但是有一个bool的参数分别代表显示和隐藏。笔者也曾调试过用一个信 传入不同参数的方式,但并没有实现预期的功能,至今没有找到原因。

悬浮窗口的实现

其次,新建一个qt带界面的类,继承自QWidget,界面中只放一个textEdit,当然可以根据需要放任何控件。如果要自定义textEdit中显示的内容,可以在构造函数中传入textEdit内容作为参数。

floatpan.h实现:

其中大部分内容是qt自动生成的,除了构造函数添加一个参数,添加一个设置自定义的内容的方法。

floatpan.cpp实现:

在构造函数中设置字体和显示的内容,并且实现设置自定义内容的方法。

如何使用

最后,在使用的地方,首先进行悬浮窗的设置

然后在使用label控件的地方,进行信 和槽的连接

显示和隐藏悬浮窗实现

这样就实现了,当把鼠标移动到label上方时,只有一个textEdit的widget会出现,当把鼠标移开时,这个widget就隐藏了。

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2019年4月16日
下一篇 2019年4月16日

相关推荐