summaryrefslogtreecommitdiffstats
path: root/src/widgets/kernel/qwidget.cpp
diff options
context:
space:
mode:
authorMarc Mutz <marc.mutz@kdab.com>2021-07-08 16:14:50 +0200
committerMarc Mutz <marc.mutz@kdab.com>2021-07-13 19:58:08 +0200
commit08e4d2db084f6abbf1840ffb694b15bd215ad069 (patch)
tree06141148c8a17fdbdda8b8629ec55764521b0cd6 /src/widgets/kernel/qwidget.cpp
parent85d27945ac3f4a82e659f8df294b75b6f302f2db (diff)
QWidget: copy Q{Menu,ToolBar}::addActions() functions
Since any QWidget can have actions since at least Qt 5.0, it makes no sense to keep the addActions(text) etc. convenience functions that have traditionally existed in QMenu and QToolBar only in these two classes, where, to add insult to injury, they were just copies of each other, increasing library size for no real reason. So, add them to QWidget, too. This will allow us to de-duplicate the code between QMenu and QToolBar, too, which will be done in a follow-up patch, subject to BC constraints. [ChangeLog][QtWidgets][QWidget] Added the same addAction(text) overloads that previously existed only on QMenu and QToolBar, with the following two differences: First, the QKeySequence object, if any, is now available on all overloads, not just the ones taking a slot, but has changed position to allow, secondly, passing an optional Qt::ConnectionType parameter which will be passed to the QObject::connect() call. In addition, the function template overloads are now properly constrained so that they exist if and only if the corresponding QObject::connect() call does, too. Change-Id: Ifc3c2789600cf603192de8224fecbf9c88d91970 Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io> Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io> Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Diffstat (limited to 'src/widgets/kernel/qwidget.cpp')
-rw-r--r--src/widgets/kernel/qwidget.cpp121
1 files changed, 121 insertions, 0 deletions
diff --git a/src/widgets/kernel/qwidget.cpp b/src/widgets/kernel/qwidget.cpp
index 95d38c4882..8c1ceaf41e 100644
--- a/src/widgets/kernel/qwidget.cpp
+++ b/src/widgets/kernel/qwidget.cpp
@@ -3207,6 +3207,127 @@ QList<QAction*> QWidget::actions() const
Q_D(const QWidget);
return d->actions;
}
+
+/*!
+ \fn QAction *QWidget::addAction(const QString &text);
+ \fn QAction *QWidget::addAction(const QString &text, const QKeySequence &shortcut);
+ \fn QAction *QWidget::addAction(const QIcon &icon, const QString &text);
+ \fn QAction *QWidget::addAction(const QIcon &icon, const QString &text, const QKeySequence &shortcut);
+
+ \since 6.3
+
+ These convenience functions create a new action with text \a text,
+ icon \a icon and shortcut \a shortcut, if any.
+
+ The functions add the newly created action to the widget's
+ list of actions, and return it.
+
+ QWidget takes ownership of the returned QAction.
+*/
+QAction *QWidget::addAction(const QString &text)
+{
+ QAction *ret = new QAction(text, this);
+ addAction(ret);
+ return ret;
+}
+
+QAction *QWidget::addAction(const QIcon &icon, const QString &text)
+{
+ QAction *ret = new QAction(icon, text, this);
+ addAction(ret);
+ return ret;
+}
+
+QAction *QWidget::addAction(const QString &text, const QKeySequence &shortcut)
+{
+ QAction *ret = addAction(text);
+ ret->setShortcut(shortcut);
+ return ret;
+}
+
+QAction *QWidget::addAction(const QIcon &icon, const QString &text, const QKeySequence &shortcut)
+{
+ QAction *ret = addAction(icon, text);
+ ret->setShortcut(shortcut);
+ return ret;
+}
+
+/*!
+ \fn QAction *QWidget::addAction(const QString &text, const QObject *receiver, const char* member, Qt::ConnectionType type)
+ \fn QAction *QWidget::addAction(const QIcon &icon, const QString &text, const QObject *receiver, const char* member, Qt::ConnectionType type)
+ \fn QAction *QWidget::addAction(const QString &text, const QKeySequence &shortcut, const QObject *receiver, const char* member, Qt::ConnectionType type)
+ \fn QAction *QWidget::addAction(const QIcon &icon, const QString &text, const QKeySequence &shortcut, const QObject *receiver, const char* member, Qt::ConnectionType type)
+
+ \overload
+ \since 6.3
+
+ This convenience function creates a new action with the text \a
+ text, icon \a icon, and shortcut \a shortcut, if any.
+
+ The action's \l{QAction::triggered()}{triggered()} signal is connected
+ to the \a receiver's \a member slot. The function adds the newly created
+ action to the widget's list of actions and returns it.
+
+ QWidget takes ownership of the returned QAction.
+*/
+QAction *QWidget::addAction(const QString &text, const QObject *receiver, const char* member,
+ Qt::ConnectionType type)
+{
+ QAction *action = addAction(text);
+ QObject::connect(action, SIGNAL(triggered(bool)), receiver, member, type);
+ return action;
+}
+
+QAction *QWidget::addAction(const QIcon &icon, const QString &text,
+ const QObject *receiver, const char* member,
+ Qt::ConnectionType type)
+{
+ QAction *action = addAction(icon, text);
+ QObject::connect(action, SIGNAL(triggered(bool)), receiver, member, type);
+ return action;
+}
+
+#if QT_CONFIG(shortcut)
+QAction *QWidget::addAction(const QString &text, const QKeySequence &shortcut,
+ const QObject *receiver, const char* member,
+ Qt::ConnectionType type)
+{
+ QAction *action = addAction(text, receiver, member, type);
+ action->setShortcut(shortcut);
+ return action;
+}
+
+QAction *QWidget::addAction(const QIcon &icon, const QString &text, const QKeySequence &shortcut,
+ const QObject *receiver, const char* member,
+ Qt::ConnectionType type)
+{
+ QAction *action = addAction(icon, text, receiver, member, type);
+ action->setShortcut(shortcut);
+ return action;
+}
+#endif // QT_CONFIG(shortcut)
+
+/*!
+ \fn template<typename...Args> QAction *QWidget::addAction(const QString &text, Args&&...args)
+ \fn template<typename...Args> QAction *QWidget::addAction(const QString &text, const QShortcut &shortcut, Args&&...args)
+ \fn template<typename...Args> QAction *QWidget::addAction(const QIcon &icon, const QString &text, Args&&...args)
+ \fn template<typename...Args> QAction *QWidget::addAction(const QIcon &icon, const QString &text, const QShortcut &shortcut, Args&&...args)
+
+ \since 6.3
+ \overload
+
+ These convenience functions create a new action with the text \a text,
+ icon \a icon, and shortcut \a shortcut, if any.
+
+ The action's \l{QAction::triggered()}{triggered()} signal is connected
+ as if by a call to QObject::connect(action, &QAction::triggered, args...),
+ perfectly forwarding \a args, including a possible Qt::ConnectionType.
+
+ The function adds the newly created action to the widget's list of
+ actions and returns it.
+
+ QWidget takes ownership of the returned QAction.
+*/
#endif // QT_NO_ACTION
/*!