diff options
author | hjk <qthjk@ovi.com> | 2013-01-18 13:43:40 +0100 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2013-02-08 15:49:48 +0100 |
commit | efbecc1a94250e6fc55b3c31bab18819d2a07ccf (patch) | |
tree | ad4e9de8e1288ff840a3d95c450c7082ed3ec5c9 /src/widgets | |
parent | c6cb4ddbf9401ca430a0c0fb0324040313131658 (diff) |
Allow actions in a QMenu to show their tooltips
This introduces a property QMenu::toolTipsVisible with
default value set to 'false'.
Task-number: QTBUG-13663
Task-number: QTBUG-2362
Change-Id: I13079609e2a92adc71b2bbff3dd94494cde1f586
Reviewed-by: Jens Bache-Wiig <jens.bache-wiig@digia.com>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
Diffstat (limited to 'src/widgets')
-rw-r--r-- | src/widgets/widgets/qmenu.cpp | 40 | ||||
-rw-r--r-- | src/widgets/widgets/qmenu.h | 4 | ||||
-rw-r--r-- | src/widgets/widgets/qmenu_p.h | 4 |
3 files changed, 47 insertions, 1 deletions
diff --git a/src/widgets/widgets/qmenu.cpp b/src/widgets/widgets/qmenu.cpp index 922a38b324..12b926e6de 100644 --- a/src/widgets/widgets/qmenu.cpp +++ b/src/widgets/widgets/qmenu.cpp @@ -67,6 +67,7 @@ #include "qwidgetaction.h" #include "qtoolbutton.h" #include "qpushbutton.h" +#include "qtooltip.h" #include <private/qpushbutton_p.h> #include <private/qaction_p.h> #include <private/qguiapplication_p.h> @@ -2368,6 +2369,19 @@ QMenu::event(QEvent *e) if (d->currentAction) d->popupAction(d->currentAction, 0, false); break; +#ifndef QT_NO_TOOLTIP + case QEvent::ToolTip: + if (d->toolTipsVisible) { + const QHelpEvent *ev = static_cast<const QHelpEvent*>(e); + if (const QAction *action = actionAt(ev->pos())) { + const QString toolTip = action->d_func()->tooltip; + if (!toolTip.isEmpty()) + QToolTip::showText(ev->globalPos(), toolTip, this); + return true; + } + } + break; +#endif // QT_NO_TOOLTIP #ifndef QT_NO_WHATSTHIS case QEvent::QueryWhatsThis: e->setAccepted(d->whatsThis.size()); @@ -3089,6 +3103,32 @@ void QMenu::setSeparatorsCollapsible(bool collapse) d->platformMenu->syncSeparatorsCollapsible(collapse); } +/*! + \property QMenu::toolTipsVisible + \since 5.1 + + \brief whether tooltips of menu actions should be visible + + This property specifies whether action menu entries show + their tooltip. + + By default, this property is false. +*/ +bool QMenu::toolTipsVisible() const +{ + Q_D(const QMenu); + return d->toolTipsVisible; +} + +void QMenu::setToolTipsVisible(bool visible) +{ + Q_D(QMenu); + if (d->toolTipsVisible == visible) + return; + + d->toolTipsVisible = visible; +} + QT_END_NAMESPACE // for private slots diff --git a/src/widgets/widgets/qmenu.h b/src/widgets/widgets/qmenu.h index 3f6661951d..7547c69a10 100644 --- a/src/widgets/widgets/qmenu.h +++ b/src/widgets/widgets/qmenu.h @@ -70,6 +70,7 @@ private: Q_PROPERTY(QString title READ title WRITE setTitle) Q_PROPERTY(QIcon icon READ icon WRITE setIcon) Q_PROPERTY(bool separatorsCollapsible READ separatorsCollapsible WRITE setSeparatorsCollapsible) + Q_PROPERTY(bool toolTipsVisible READ toolTipsVisible WRITE setToolTipsVisible) public: explicit QMenu(QWidget *parent = 0); @@ -139,6 +140,9 @@ public: bool separatorsCollapsible() const; void setSeparatorsCollapsible(bool collapse); + bool toolTipsVisible() const; + void setToolTipsVisible(bool visible); + Q_SIGNALS: void aboutToShow(); void aboutToHide(); diff --git a/src/widgets/widgets/qmenu_p.h b/src/widgets/widgets/qmenu_p.h index 0b8137cff3..27b4745951 100644 --- a/src/widgets/widgets/qmenu_p.h +++ b/src/widgets/widgets/qmenu_p.h @@ -84,7 +84,8 @@ class QMenuPrivate : public QWidgetPrivate Q_DECLARE_PUBLIC(QMenu) public: QMenuPrivate() : itemsDirty(0), maxIconWidth(0), tabWidth(0), ncols(0), - collapsibleSeparators(true), activationRecursionGuard(false), hasHadMouse(0), aboutToHide(0), motions(0), + collapsibleSeparators(true), toolTipsVisible(false), + activationRecursionGuard(false), hasHadMouse(0), aboutToHide(0), motions(0), currentAction(0), #ifdef QT_KEYPAD_NAVIGATION selectAction(0), @@ -123,6 +124,7 @@ public: QRect popupGeometry(int screen = -1) const; mutable uint ncols : 4; //4 bits is probably plenty uint collapsibleSeparators : 1; + uint toolTipsVisible : 1; QSize adjustMenuSizeForScreen(const QRect & screen); int getLastVisibleAction() const; |