气球提示与Qt

9
在我的Qt应用中,我想使用气球/气球提示,就像Windows用户体验指南中所示的那样(不是系统托盘上的气球)。
这在Qt中支持吗?我没有找到任何相关资料。是否有开源库可以实现这个功能(Qxt没有)?如果要自己创建,最好的方法是什么?

据我所知,Qt 中没有内置的功能可以做到这一点。我以前也想过要实现它,最终只能从头开始编写一个自定义小部件来完成它。 - Chris
它是否令人满意地工作?您介意分享您的解决方案或一些想法吗? - Sebastian Negraszus
3个回答

1
要在Qt 5.12中使用私有类,您需要执行以下操作:
1)将QT += widgets-private添加到您的PRO文件中,以便能够包含私有标头
2)在您的源文件中#include <QtWidgets/private/qsystemtrayicon_p.h> 然后调用静态方法showBallon()或实例化它并调用baloon()。但这仅适用于系统托盘,并且它是一个私有API,可能随时更改。我个人不会使用它。但如果您想知道它如何呈现,请查看https://code.woboq.org/qt5/qtbase/src/widgets/util/qsystemtrayicon.cpp.html#_ZN11QBalloonTip10paintEventEP11QPaintEvent

1
你可以使用QBalloonTip,它是一个内部类,定义在以下文件中:
  • Qt 5:

    QtDir/Src/qtbase/src/widgets/util/qsystemtrayicon_p.h

  • Qt 4:

    QtDir/src/gui/utils/util/qsystemtrayicon_p.h

QBalloonTip 继承自 QWidget ,并在相同目录下的qsystemtrayicon.cpp 中实现。它有以下方法用于显示气泡提示:
void QBalloonTip::balloon(const QPoint& pos, int msecs, bool showArrow)

您可以修改此类的源代码以获得所需的气球提示。

1

搜索 QBalloonTip 类(在 Qt 文档(doxygen 参考)和代码库中),查看其实现方式,并使用类似的技术。


1
除了QBalloonTip是在src/gui/utils/util/qsystemtrayicon_p.h中定义的内部类,不属于公共和文档化的API之外。 - alexisdm
3
Qt 4.7助手不认识这个类。通过谷歌搜索发现这是QSystemTrayIcon使用的内部类,不属于API的一部分。您确定这就是我要找的类吗? - Sebastian Negraszus

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接