1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
|
#include "auto-update-tooltip-label.hpp"
#include <QToolTip>
namespace advss {
AutoUpdateHelpIcon::AutoUpdateHelpIcon(
QWidget *parent, const std::function<QString()> &updateTooltipCallback,
int updateIntervalMs)
: HelpIcon("", parent),
_callback(updateTooltipCallback),
_timer(new QTimer(this)),
_updateIntervalMs(updateIntervalMs)
{
connect(_timer, &QTimer::timeout, this,
&AutoUpdateHelpIcon::UpdateTooltip);
}
void AutoUpdateHelpIcon::enterEvent(QEnterEvent *event)
{
UpdateTooltip();
_timer->start(_updateIntervalMs);
QLabel::enterEvent(event);
}
void AutoUpdateHelpIcon::leaveEvent(QEvent *event)
{
_timer->stop();
QLabel::leaveEvent(event);
}
void AutoUpdateHelpIcon::UpdateTooltip()
{
if (!underMouse()) {
return;
}
const QString text = _callback();
QToolTip::showText(QCursor::pos(), text, this);
}
} // namespace advss
|