#include <qxttooltip_p.h>

Public Member Functions | |
| QxtToolTipPrivate () | |
| ~QxtToolTipPrivate () | |
| void | show (const QPoint &pos, QWidget *tooltip, QWidget *parent=0, const QRect &rect=QRect()) |
| void | setToolTip (QWidget *tooltip) |
| bool | eventFilter (QObject *parent, QEvent *event) |
| void | hideLater () |
| QPoint | calculatePos (int scr, const QPoint &eventPos) const |
Static Public Member Functions | |
| static QxtToolTipPrivate * | instance () |
Public Attributes | |
| QHash< WidgetPtr, WidgetArea > | tooltips |
| QVBoxLayout * | vbox |
Protected Member Functions | |
| void | enterEvent (QEvent *event) |
| void | paintEvent (QPaintEvent *event) |
Definition at line 38 of file qxttooltip_p.h.
| QxtToolTipPrivate::QxtToolTipPrivate | ( | ) |
Definition at line 52 of file qxttooltip.cpp.
Referenced by instance().
: QWidget(qApp->desktop(), FLAGS) { setWindowFlags(FLAGS); vbox = new QVBoxLayout(this); setPalette(QToolTip::palette()); setWindowOpacity(style()->styleHint(QStyle::SH_ToolTipLabel_Opacity, 0, this) / 255.0); layout()->setMargin(style()->pixelMetric(QStyle::PM_ToolTipLabelFrameWidth, 0, this)); qApp->installEventFilter(this); }
| QxtToolTipPrivate::~QxtToolTipPrivate | ( | ) |
Definition at line 62 of file qxttooltip.cpp.
{
qApp->removeEventFilter(this); // not really necessary but rather for completeness :)
self = 0;
}
| QPoint QxtToolTipPrivate::calculatePos | ( | int | scr, |
| const QPoint & | eventPos | ||
| ) | const |
Definition at line 182 of file qxttooltip.cpp.
Referenced by show().
{
#ifdef Q_WS_MAC
QRect screen = QApplication::desktop()->availableGeometry(scr);
#else
QRect screen = QApplication::desktop()->screenGeometry(scr);
#endif
QPoint p = eventPos;
p += QPoint(2,
#ifdef Q_WS_WIN
24
#else
16
#endif
);
QSize s = sizeHint();
if (p.x() + s.width() > screen.x() + screen.width())
p.rx() -= 4 + s.width();
if (p.y() + s.height() > screen.y() + screen.height())
p.ry() -= 24 + s.height();
if (p.y() < screen.y())
p.setY(screen.y());
if (p.x() + s.width() > screen.x() + screen.width())
p.setX(screen.x() + screen.width() - s.width());
if (p.x() < screen.x())
p.setX(screen.x());
if (p.y() + s.height() > screen.y() + screen.height())
p.setY(screen.y() + screen.height() - s.height());
return p;
}
| void QxtToolTipPrivate::enterEvent | ( | QEvent * | event ) | [protected] |
Definition at line 100 of file qxttooltip.cpp.
References hideLater().
{
Q_UNUSED(event);
hideLater();
}
| bool QxtToolTipPrivate::eventFilter | ( | QObject * | parent, |
| QEvent * | event | ||
| ) |
Definition at line 115 of file qxttooltip.cpp.
References hideLater(), mitk::Key_Alt, mitk::Key_Control, mitk::Key_Meta, mitk::Key_Shift, show(), and tooltips.
{
switch (event->type())
{
case QEvent::KeyPress:
case QEvent::KeyRelease:
{
// accept only modifiers
const QKeyEvent* keyEvent = static_cast<QKeyEvent*>(event);
const int key = keyEvent->key();
const Qt::KeyboardModifiers mods = keyEvent->modifiers();
if ((mods & Qt::KeyboardModifierMask) ||
(key == Qt::Key_Shift || key == Qt::Key_Control ||
key == Qt::Key_Alt || key == Qt::Key_Meta))
break;
}
case QEvent::Leave:
case QEvent::WindowActivate:
case QEvent::WindowDeactivate:
case QEvent::MouseButtonPress:
case QEvent::MouseButtonRelease:
case QEvent::MouseButtonDblClick:
case QEvent::FocusIn:
case QEvent::FocusOut:
case QEvent::Wheel:
hideLater();
break;
case QEvent::MouseMove:
{
const QPoint pos = static_cast<QMouseEvent*>(event)->pos();
if (!currentRect.isNull() && !currentRect.contains(pos))
{
hideLater();
}
break;
}
case QEvent::ToolTip:
{
// eat appropriate tooltip events
QWidget* widget = static_cast<QWidget*>(object);
if (tooltips.contains(widget))
{
QHelpEvent* helpEvent = static_cast<QHelpEvent*>(event);
const QRect area = tooltips.value(widget).second;
if (area.isNull() || area.contains(helpEvent->pos()))
{
show(helpEvent->globalPos(), tooltips.value(widget).first, widget, area);
return true;
}
}
}
default:
break;
}
return false;
}
| void QxtToolTipPrivate::hideLater | ( | ) |
Definition at line 175 of file qxttooltip.cpp.
Referenced by enterEvent(), and eventFilter().
{
currentRect = QRect();
if (isVisible())
QTimer::singleShot(0, this, SLOT(hide()));
}
| QxtToolTipPrivate * QxtToolTipPrivate::instance | ( | ) | [static] |
Definition at line 45 of file qxttooltip.cpp.
References QxtToolTipPrivate().
Referenced by QxtToolTip::hide(), QxtToolTip::margin(), QxtToolTip::opacity(), QxtToolTip::setMargin(), QxtToolTip::setOpacity(), QxtToolTip::setToolTip(), QxtToolTip::setToolTipRect(), QxtToolTip::show(), QxtToolTip::toolTip(), and QxtToolTip::toolTipRect().
{
if (!self)
self = new QxtToolTipPrivate();
return self;
}
| void QxtToolTipPrivate::paintEvent | ( | QPaintEvent * | event ) | [protected] |
Definition at line 106 of file qxttooltip.cpp.
{
Q_UNUSED(event);
QStylePainter painter(this);
QStyleOptionFrame opt;
opt.initFrom(this);
painter.drawPrimitive(QStyle::PE_PanelTipLabel, opt);
}
| void QxtToolTipPrivate::setToolTip | ( | QWidget * | tooltip ) |
| void QxtToolTipPrivate::show | ( | const QPoint & | pos, |
| QWidget * | tooltip, | ||
| QWidget * | parent = 0, |
||
| const QRect & | rect = QRect() |
||
| ) |
Definition at line 68 of file qxttooltip.cpp.
References calculatePos(), FLAGS, and setToolTip().
Referenced by eventFilter(), and QxtToolTip::show().
{
Q_ASSERT(tooltip && parent);
if (!isVisible())
{
int scr = 0;
if (QApplication::desktop()->isVirtualDesktop())
scr = QApplication::desktop()->screenNumber(pos);
else
scr = QApplication::desktop()->screenNumber(this);
setParent(QApplication::desktop()->screen(scr));
setWindowFlags(FLAGS);
setToolTip(tooltip);
currentParent = parent;
currentRect = rect;
move(calculatePos(scr, pos));
QWidget::show();
}
}
Definition at line 52 of file qxttooltip_p.h.
Referenced by eventFilter(), QxtToolTip::setToolTip(), QxtToolTip::setToolTipRect(), QxtToolTip::toolTip(), and QxtToolTip::toolTipRect().
| QVBoxLayout* QxtToolTipPrivate::vbox |
Definition at line 53 of file qxttooltip_p.h.
Referenced by QxtToolTipPrivate(), and setToolTip().
1.7.2