diff options
Diffstat (limited to 'src/widgets/widgets/qmenubar.h')
-rw-r--r-- | src/widgets/widgets/qmenubar.h | 28 |
1 files changed, 27 insertions, 1 deletions
diff --git a/src/widgets/widgets/qmenubar.h b/src/widgets/widgets/qmenubar.h index be70f4ea48..2f071e7e3b 100644 --- a/src/widgets/widgets/qmenubar.h +++ b/src/widgets/widgets/qmenubar.h @@ -60,13 +60,39 @@ class Q_WIDGETS_EXPORT QMenuBar : public QWidget Q_PROPERTY(bool nativeMenuBar READ isNativeMenuBar WRITE setNativeMenuBar) public: - explicit QMenuBar(QWidget *parent = Q_NULLPTR); + explicit QMenuBar(QWidget *parent = nullptr); ~QMenuBar(); using QWidget::addAction; 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); |