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>bb10
parent
c6cb4ddbf9
commit
efbecc1a94
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue