diff options
Diffstat (limited to 'src/widgets')
-rw-r--r-- | src/widgets/widgets/qmenubar.cpp | 36 | ||||
-rw-r--r-- | src/widgets/widgets/qmenubar.h | 26 |
2 files changed, 62 insertions, 0 deletions
diff --git a/src/widgets/widgets/qmenubar.cpp b/src/widgets/widgets/qmenubar.cpp index 80c6d28e85..384c3b4c2c 100644 --- a/src/widgets/widgets/qmenubar.cpp +++ b/src/widgets/widgets/qmenubar.cpp @@ -781,6 +781,42 @@ QAction *QMenuBar::addAction(const QString &text, const QObject *receiver, const } /*! + \fn template<typename Obj, typename PointerToMemberFunctionOrFunctor> + QAction *QMenuBar::addAction(const QString &text, const Obj *receiver, PointerToMemberFunctionOrFunctor method) + + \since 5.11 + + \overload + + This convenience function creates a new action with the given \a + text. The action's triggered() signal is connected to the + \a method of the \a receiver. The function adds the newly created + action to the menu's list of actions and returns it. + + QMenuBar takes ownership of the returned QAction. + + \sa QWidget::addAction(), QWidget::actions() +*/ + +/*! + \fn template<typename Functor> + QAction *QMenuBar::addAction(const QString &text, Functor functor) + + \since 5.11 + + \overload + + This convenience function creates a new action with the given \a + text. The action's triggered() signal is connected to the + \a functor. The function adds the newly created + action to the menu's list of actions and returns it. + + QMenuBar takes ownership of the returned QAction. + + \sa QWidget::addAction(), QWidget::actions() +*/ + +/*! Appends a new QMenu with \a title to the menu bar. The menu bar takes ownership of the menu. Returns the new menu. diff --git a/src/widgets/widgets/qmenubar.h b/src/widgets/widgets/qmenubar.h index 4f8e3b8d53..2f071e7e3b 100644 --- a/src/widgets/widgets/qmenubar.h +++ b/src/widgets/widgets/qmenubar.h @@ -67,6 +67,32 @@ public: QAction *addAction(const QString &text); QAction *addAction(const QString &text, const QObject *receiver, const char* member); +#ifdef Q_QDOC + template<typename Obj, typename PointerToMemberFunctionOrFunctor> + QAction *addAction(const QString &text, const Obj *receiver, PointerToMemberFunctionOrFunctor method); + template<typename Functor> + QAction *addAction(const QString &text, Functor functor); +#else + // addAction(QString): Connect to a QObject slot / functor or function pointer (with context) + template<typename Obj, typename Func1> + inline typename std::enable_if<!std::is_same<const char*, Func1>::value + && QtPrivate::IsPointerToTypeDerivedFromQObject<Obj*>::Value, QAction *>::type + addAction(const QString &text, const Obj *object, Func1 slot) + { + QAction *result = addAction(text); + connect(result, &QAction::triggered, object, std::move(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) + { + QAction *result = addAction(text); + connect(result, &QAction::triggered, std::move(slot)); + return result; + } +#endif // !Q_QDOC + QAction *addMenu(QMenu *menu); QMenu *addMenu(const QString &title); QMenu *addMenu(const QIcon &icon, const QString &title); |