diff options
author | Friedemann Kleint <Friedemann.Kleint@theqtcompany.com> | 2015-06-17 12:21:20 +0200 |
---|---|---|
committer | Friedemann Kleint <Friedemann.Kleint@theqtcompany.com> | 2015-06-18 14:42:24 +0000 |
commit | c0eafb9d75b6e24c03cde848b6482d0fcad9ee31 (patch) | |
tree | a7b7cf882659704848dd7061d067c8cb11929e54 /src/widgets/widgets/qmenu.h | |
parent | a851868e63311622bb83d2e08388b34c4d6d869e (diff) |
QMenu/QToolBar: Add overloads of addAction() using Qt 5 signals and slots.
Add documentation dummies and templates, add tests verifying
compilation.
Change-Id: Ide336b28bc069cfd17848ce3a17fd428e36ed65b
Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
Diffstat (limited to 'src/widgets/widgets/qmenu.h')
-rw-r--r-- | src/widgets/widgets/qmenu.h | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/src/widgets/widgets/qmenu.h b/src/widgets/widgets/qmenu.h index 5dda8b2370..21e1432d2a 100644 --- a/src/widgets/widgets/qmenu.h +++ b/src/widgets/widgets/qmenu.h @@ -78,6 +78,72 @@ public: QAction *addAction(const QString &text, const QObject *receiver, const char* member, const QKeySequence &shortcut = 0); QAction *addAction(const QIcon &icon, const QString &text, const QObject *receiver, const char* member, const QKeySequence &shortcut = 0); +#ifdef Q_QDOC + QAction *addAction(const QString &text, const QObject *receiver, PointerToMemberFunction method, const QKeySequence &shortcut = 0); + QAction *addAction(const QString &text, Functor functor, const QKeySequence &shortcut = 0); + QAction *addAction(const QString &text, const QObject *context, Functor functor, const QKeySequence &shortcut = 0); + QAction *addAction(const QIcon &icon, const QString &text, const QObject *receiver, PointerToMemberFunction method, const QKeySequence &shortcut = 0); + QAction *addAction(const QIcon &icon, const QString &text, Functor functor, const QKeySequence &shortcut = 0); + QAction *addAction(const QIcon &icon, const QString &text, const QObject *context, Functor functor, const QKeySequence &shortcut = 0); +#else + // addAction(QString): Connect to a QObject slot / functor or function pointer (with context) + template<class Obj, typename Func1> + inline typename QtPrivate::QEnableIf<!QtPrivate::is_same<const char*, Func1>::value + && QtPrivate::IsPointerToTypeDerivedFromQObject<Obj*>::Value, QAction *>::Type + addAction(const QString &text, const Obj *object, Func1 slot, const QKeySequence &shortcut = 0) + { + QAction *result = addAction(text); +#ifdef QT_NO_SHORTCUT + Q_UNUSED(shortcut) +#else + result->setShortcut(shortcut); +#endif + connect(result, &QAction::triggered, object, slot); + return result; + } + // addAction(QString): Connect to a functor or function pointer (without context) + template <typename Func1> + inline QAction *addAction(const QString &text, Func1 slot, const QKeySequence &shortcut = 0) + { + QAction *result = addAction(text); +#ifdef QT_NO_SHORTCUT + Q_UNUSED(shortcut) +#else + result->setShortcut(shortcut); +#endif + connect(result, &QAction::triggered, slot); + return result; + } + // addAction(QIcon, QString): Connect to a QObject slot / functor or function pointer (with context) + template<class Obj, typename Func1> + inline typename QtPrivate::QEnableIf<!QtPrivate::is_same<const char*, Func1>::value + && QtPrivate::IsPointerToTypeDerivedFromQObject<Obj*>::Value, QAction *>::Type + addAction(const QIcon &actionIcon, const QString &text, const Obj *object, Func1 slot, const QKeySequence &shortcut = 0) + { + QAction *result = addAction(actionIcon, text); +#ifdef QT_NO_SHORTCUT + Q_UNUSED(shortcut) +#else + result->setShortcut(shortcut); +#endif + connect(result, &QAction::triggered, object, slot); + return result; + } + // addAction(QIcon, QString): Connect to a functor or function pointer (without context) + template <typename Func1> + inline QAction *addAction(const QIcon &actionIcon, const QString &text, Func1 slot, const QKeySequence &shortcut = 0) + { + QAction *result = addAction(actionIcon, text); +#ifdef QT_NO_SHORTCUT + Q_UNUSED(shortcut) +#else + result->setShortcut(shortcut); +#endif + connect(result, &QAction::triggered, slot); + return result; + } +#endif // !Q_QDOC + QAction *addMenu(QMenu *menu); QMenu *addMenu(const QString &title); QMenu *addMenu(const QIcon &icon, const QString &title); |