Qt 4.8
Public Functions | Protected Functions | Friends | List of all members
QWidgetAction Class Reference

The QWidgetAction class extends QAction by an interface for inserting custom widgets into action based containers, such as toolbars. More...

#include <qwidgetaction.h>

Inheritance diagram for QWidgetAction:
QAction QObject

Public Functions

QWidgetdefaultWidget () const
 Returns the default widget. More...
 
 QWidgetAction (QObject *parent)
 Constructs an action with parent. More...
 
void releaseWidget (QWidget *widget)
 Releases the specified widget. More...
 
QWidgetrequestWidget (QWidget *parent)
 Returns a widget that represents the action, with the given parent. More...
 
void setDefaultWidget (QWidget *w)
 Sets widget to be the default widget. More...
 
virtual ~QWidgetAction ()
 Destroys the object and frees allocated resources. More...
 
- Public Functions inherited from QAction
QActionGroupactionGroup () const
 Returns the action group for this action. More...
 
void activate (ActionEvent event)
 Sends the relevant signals for ActionEvent event. More...
 
QList< QGraphicsWidget * > associatedGraphicsWidgets () const
 Returns a list of widgets this action has been added to. More...
 
QList< QWidget * > associatedWidgets () const
 Returns a list of widgets this action has been added to. More...
 
bool autoRepeat () const
 
QVariant data () const
 Returns the user data as set in QAction::setData. More...
 
QFont font () const
 
QIcon icon () const
 
QString iconText () const
 
bool isCheckable () const
 
bool isChecked () const
 
bool isEnabled () const
 
bool isIconVisibleInMenu () const
 
bool isSeparator () const
 Returns true if this action is a separator action; otherwise it returns false. More...
 
bool isVisible () const
 
QMenumenu () const
 Returns the menu contained by this action. More...
 
MenuRole menuRole () const
 
QWidgetparentWidget () const
 Returns the parent widget. More...
 
Priority priority () const
 
 QAction (QObject *parent)
 Constructs an action with parent. More...
 
 QAction (const QString &text, QObject *parent)
 Constructs an action with some text and parent. More...
 
 QAction (const QIcon &icon, const QString &text, QObject *parent)
 Constructs an action with an icon and some text and parent. More...
 
void setActionGroup (QActionGroup *group)
 Sets this action group to group. More...
 
void setAutoRepeat (bool)
 
void setCheckable (bool)
 
void setData (const QVariant &var)
 Sets the action's internal data to the given userData. More...
 
void setFont (const QFont &font)
 
void setIcon (const QIcon &icon)
 
void setIconText (const QString &text)
 
void setIconVisibleInMenu (bool visible)
 
void setMenu (QMenu *menu)
 Sets the menu contained by this action to the specified menu. More...
 
void setMenuRole (MenuRole menuRole)
 
void setPriority (Priority priority)
 
void setSeparator (bool b)
 If b is true then this action will be considered a separator. More...
 
void setShortcut (const QKeySequence &shortcut)
 
void setShortcutContext (Qt::ShortcutContext context)
 
void setShortcuts (const QList< QKeySequence > &shortcuts)
 Sets shortcuts as the list of shortcuts that trigger the action. More...
 
void setShortcuts (QKeySequence::StandardKey)
 Sets a platform dependent list of shortcuts based on the key. More...
 
void setSoftKeyRole (SoftKeyRole softKeyRole)
 
void setStatusTip (const QString &statusTip)
 
void setText (const QString &text)
 
void setToolTip (const QString &tip)
 
void setWhatsThis (const QString &what)
 
QKeySequence shortcut () const
 
Qt::ShortcutContext shortcutContext () const
 
QList< QKeySequenceshortcuts () const
 Returns the list of shortcuts, with the primary shortcut as the first element of the list. More...
 
bool showStatusText (QWidget *widget=0)
 Updates the relevant status bar for the widget specified by sending a QStatusTipEvent to its parent widget. More...
 
SoftKeyRole softKeyRole () const
 
QString statusTip () const
 
QString text () const
 
QString toolTip () const
 
QString whatsThis () const
 
 ~QAction ()
 Destroys the object and frees allocated resources. More...
 
- Public Functions inherited from QObject
bool blockSignals (bool b)
 If block is true, signals emitted by this object are blocked (i.e., emitting a signal will not invoke anything connected to it). More...
 
const QObjectListchildren () const
 Returns a list of child objects. More...
 
bool connect (const QObject *sender, const char *signal, const char *member, Qt::ConnectionType type=Qt::AutoConnection) const
 
bool disconnect (const char *signal=0, const QObject *receiver=0, const char *member=0)
 
bool disconnect (const QObject *receiver, const char *member=0)
 
void dumpObjectInfo ()
 Dumps information about signal connections, etc. More...
 
void dumpObjectTree ()
 Dumps a tree of children to the debug output. More...
 
QList< QByteArraydynamicPropertyNames () const
 Returns the names of all properties that were dynamically added to the object using setProperty(). More...
 
template<typename T >
findChild (const QString &aName=QString()) const
 Returns the child of this object that can be cast into type T and that is called name, or 0 if there is no such object. More...
 
template<typename T >
QList< T > findChildren (const QString &aName=QString()) const
 Returns all children of this object with the given name that can be cast to type T, or an empty list if there are no such objects. More...
 
template<typename T >
QList< T > findChildren (const QRegExp &re) const
 
bool inherits (const char *classname) const
 Returns true if this object is an instance of a class that inherits className or a QObject subclass that inherits className; otherwise returns false. More...
 
void installEventFilter (QObject *)
 Installs an event filter filterObj on this object. More...
 
bool isWidgetType () const
 Returns true if the object is a widget; otherwise returns false. More...
 
void killTimer (int id)
 Kills the timer with timer identifier, id. More...
 
virtual const QMetaObjectmetaObject () const
 Returns a pointer to the meta-object of this object. More...
 
void moveToThread (QThread *thread)
 Changes the thread affinity for this object and its children. More...
 
QString objectName () const
 
QObjectparent () const
 Returns a pointer to the parent object. More...
 
QVariant property (const char *name) const
 Returns the value of the object's name property. More...
 
Q_INVOKABLE QObject (QObject *parent=0)
 Constructs an object with parent object parent. More...
 
void removeEventFilter (QObject *)
 Removes an event filter object obj from this object. More...
 
void setObjectName (const QString &name)
 
void setParent (QObject *)
 Makes the object a child of parent. More...
 
bool setProperty (const char *name, const QVariant &value)
 Sets the value of the object's name property to value. More...
 
void setUserData (uint id, QObjectUserData *data)
 
bool signalsBlocked () const
 Returns true if signals are blocked; otherwise returns false. More...
 
int startTimer (int interval)
 Starts a timer and returns a timer identifier, or returns zero if it could not start a timer. More...
 
QThreadthread () const
 Returns the thread in which the object lives. More...
 
QObjectUserDatauserData (uint id) const
 
virtual ~QObject ()
 Destroys the object, deleting all its child objects. More...
 

Protected Functions

QList< QWidget * > createdWidgets () const
 Returns the list of widgets that have been using createWidget() and are currently in use by widgets the action has been added to. More...
 
virtual QWidgetcreateWidget (QWidget *parent)
 This function is called whenever the action is added to a container widget that supports custom widgets. More...
 
virtual void deleteWidget (QWidget *widget)
 This function is called whenever the action is removed from a container widget that displays the action using a custom widget previously created using createWidget(). More...
 
virtual bool event (QEvent *)
 Reimplemented Function More...
 
virtual bool eventFilter (QObject *, QEvent *)
 Reimplemented Function More...
 
- Protected Functions inherited from QAction
 QAction (QActionPrivate &dd, QObject *parent)
 
- Protected Functions inherited from QObject
virtual void childEvent (QChildEvent *)
 This event handler can be reimplemented in a subclass to receive child events. More...
 
virtual void connectNotify (const char *signal)
 This virtual function is called when something has been connected to signal in this object. More...
 
virtual void customEvent (QEvent *)
 This event handler can be reimplemented in a subclass to receive custom events. More...
 
virtual void disconnectNotify (const char *signal)
 This virtual function is called when something has been disconnected from signal in this object. More...
 
 QObject (QObjectPrivate &dd, QObject *parent=0)
 
int receivers (const char *signal) const
 Returns the number of receivers connected to the signal. More...
 
QObjectsender () const
 Returns a pointer to the object that sent the signal, if called in a slot activated by a signal; otherwise it returns 0. More...
 
int senderSignalIndex () const
 
virtual void timerEvent (QTimerEvent *)
 This event handler can be reimplemented in a subclass to receive timer events for the object. More...
 

Friends

class QToolBar
 

Additional Inherited Members

- Public Types inherited from QAction
enum  ActionEvent { Trigger, Hover }
 This enum type is used when calling QAction::activate() More...
 
enum  MenuRole {
  NoRole, TextHeuristicRole, ApplicationSpecificRole, AboutQtRole,
  AboutRole, PreferencesRole, QuitRole
}
 This enum describes how an action should be moved into the application menu on Mac OS X. More...
 
enum  Priority { LowPriority = 0, NormalPriority = 128, HighPriority = 256 }
 This enum defines priorities for actions in user interface. More...
 
enum  SoftKeyRole { NoSoftKey, PositiveSoftKey, NegativeSoftKey, SelectSoftKey }
 This enum describes how an action should be placed in the softkey bar. More...
 
- Public Slots inherited from QAction
void hover ()
 This is a convenience slot that calls activate(Hover). More...
 
void setChecked (bool)
 
void setDisabled (bool b)
 This is a convenience function for the enabled property, that is useful for signals–slots connections. More...
 
void setEnabled (bool)
 
void setVisible (bool)
 
void toggle ()
 This is a convenience function for the checked property. More...
 
void trigger ()
 This is a convenience slot that calls activate(Trigger). More...
 
- Public Slots inherited from QObject
void deleteLater ()
 Schedules this object for deletion. More...
 
- Signals inherited from QAction
void changed ()
 This signal is emitted when an action has changed. More...
 
void hovered ()
 This signal is emitted when an action is highlighted by the user; for example, when the user pauses with the cursor over a menu option, toolbar button, or presses an action's shortcut key combination. More...
 
void toggled (bool)
 This signal is emitted whenever a checkable action changes its isChecked() status. More...
 
void triggered (bool checked=false)
 This signal is emitted when an action is activated by the user; for example, when the user clicks a menu option, toolbar button, or presses an action's shortcut key combination, or when trigger() was called. More...
 
- Signals inherited from QObject
void destroyed (QObject *=0)
 This signal is emitted immediately before the object obj is destroyed, and can not be blocked. More...
 
- Static Public Functions inherited from QObject
static bool connect (const QObject *sender, const char *signal, const QObject *receiver, const char *member, Qt::ConnectionType=Qt::AutoConnection)
 Creates a connection of the given type from the signal in the sender object to the method in the receiver object. More...
 
static bool connect (const QObject *sender, const QMetaMethod &signal, const QObject *receiver, const QMetaMethod &method, Qt::ConnectionType type=Qt::AutoConnection)
 
static bool disconnect (const QObject *sender, const char *signal, const QObject *receiver, const char *member)
 Disconnects signal in object sender from method in object receiver. More...
 
static bool disconnect (const QObject *sender, const QMetaMethod &signal, const QObject *receiver, const QMetaMethod &member)
 
static uint registerUserData ()
 
static QString tr (const char *sourceText, const char *comment=0, int n=-1)
 
static QString trUtf8 (const char *sourceText, const char *comment=0, int n=-1)
 
- Static Public Variables inherited from QObject
static const QMetaObject staticMetaObject
 This variable stores the meta-object for the class. More...
 
- Protected Variables inherited from QObject
QScopedPointer< QObjectDatad_ptr
 
- Static Protected Variables inherited from QObject
static const QMetaObject staticQtMetaObject
 

Detailed Description

The QWidgetAction class extends QAction by an interface for inserting custom widgets into action based containers, such as toolbars.

Since
4.2

Most actions in an application are represented as items in menus or buttons in toolbars. However sometimes more complex widgets are necessary. For example a zoom action in a word processor may be realized using a QComboBox in a QToolBar, presenting a range of different zoom levels. QToolBar provides QToolBar::insertWidget() as convenience function for inserting a single widget. However if you want to implement an action that uses custom widgets for visualization in multiple containers then you have to subclass QWidgetAction.

If a QWidgetAction is added for example to a QToolBar then QWidgetAction::createWidget() is called. Reimplementations of that function should create a new custom widget with the specified parent.

If the action is removed from a container widget then QWidgetAction::deleteWidget() is called with the previously created custom widget as argument. The default implementation hides the widget and deletes it using QObject::deleteLater().

If you have only one single custom widget then you can set it as default widget using setDefaultWidget(). That widget will then be used if the action is added to a QToolBar, or in general to an action container that supports QWidgetAction. If a QWidgetAction with only a default widget is added to two toolbars at the same time then the default widget is shown only in the first toolbar the action was added to. QWidgetAction takes over ownership of the default widget.

Note that it is up to the widget to activate the action, for example by reimplementing mouse event handlers and calling QAction::trigger().

Mac OS X: If you add a widget to a menu in the application's menu bar on Mac OS X, the widget will be added and it will function but with some limitations:

  1. The widget is reparented away from the QMenu to the native menu view. If you show the menu in some other place (e.g. as a popup menu), the widget will not be there.
  2. Focus/Keyboard handling of the widget is not possible.
  3. Due to Apple's design, mouse tracking on the widget currently does not work.
  4. Connecting the triggered() signal to a slot that opens a modal dialog will cause a crash in Mac OS X 10.4 (known bug acknowledged by Apple), a workaround is to use a QueuedConnection instead of a DirectConnection.
See also
QAction, QActionGroup, QWidget

Definition at line 57 of file qwidgetaction.h.

Constructors and Destructors

◆ QWidgetAction()

QWidgetAction::QWidgetAction ( QObject parent)
explicit

Constructs an action with parent.

Definition at line 114 of file qwidgetaction.cpp.

115  : QAction(*(new QWidgetActionPrivate), parent)
116 {
117 }
QAction(QObject *parent)
Constructs an action with parent.
Definition: qaction.cpp:328

◆ ~QWidgetAction()

QWidgetAction::~QWidgetAction ( )
virtual

Destroys the object and frees allocated resources.

Definition at line 122 of file qwidgetaction.cpp.

123 {
125  for (int i = 0; i < d->createdWidgets.count(); ++i)
126  disconnect(d->createdWidgets.at(i), SIGNAL(destroyed(QObject*)),
127  this, SLOT(_q_widgetDestroyed(QObject*)));
128  QList<QWidget *> widgetsToDelete = d->createdWidgets;
129  d->createdWidgets.clear();
130  qDeleteAll(widgetsToDelete);
131  delete d->defaultWidget;
132 }
double d
Definition: qnumeric_p.h:62
#define SLOT(a)
Definition: qobjectdefs.h:226
The QObject class is the base class of all Qt objects.
Definition: qobject.h:111
#define Q_D(Class)
Definition: qglobal.h:2482
#define SIGNAL(a)
Definition: qobjectdefs.h:227
void destroyed(QObject *=0)
This signal is emitted immediately before the object obj is destroyed, and can not be blocked...
static bool disconnect(const QObject *sender, const char *signal, const QObject *receiver, const char *member)
Disconnects signal in object sender from method in object receiver.
Definition: qobject.cpp:2895
The QWidgetAction class extends QAction by an interface for inserting custom widgets into action base...
Definition: qwidgetaction.h:57
Q_OUTOFLINE_TEMPLATE void qDeleteAll(ForwardIterator begin, ForwardIterator end)
Definition: qalgorithms.h:319

Functions

◆ createdWidgets()

QList< QWidget * > QWidgetAction::createdWidgets ( ) const
protected

Returns the list of widgets that have been using createWidget() and are currently in use by widgets the action has been added to.

Definition at line 280 of file qwidgetaction.cpp.

281 {
282  Q_D(const QWidgetAction);
283  return d->createdWidgets;
284 }
double d
Definition: qnumeric_p.h:62
#define Q_D(Class)
Definition: qglobal.h:2482
The QWidgetAction class extends QAction by an interface for inserting custom widgets into action base...
Definition: qwidgetaction.h:57

◆ createWidget()

QWidget * QWidgetAction::createWidget ( QWidget parent)
protectedvirtual

This function is called whenever the action is added to a container widget that supports custom widgets.

If you don't want a custom widget to be used as representation of the action in the specified parent widget then 0 should be returned.

See also
deleteWidget()

Definition at line 255 of file qwidgetaction.cpp.

Referenced by requestWidget().

256 {
257  Q_UNUSED(parent)
258  return 0;
259 }
#define Q_UNUSED(x)
Indicates to the compiler that the parameter with the specified name is not used in the body of a fun...
Definition: qglobal.h:1729

◆ defaultWidget()

QWidget * QWidgetAction::defaultWidget ( ) const

Returns the default widget.

Definition at line 162 of file qwidgetaction.cpp.

Referenced by defaultWidgetAction().

163 {
164  Q_D(const QWidgetAction);
165  return d->defaultWidget;
166 }
double d
Definition: qnumeric_p.h:62
#define Q_D(Class)
Definition: qglobal.h:2482
The QWidgetAction class extends QAction by an interface for inserting custom widgets into action base...
Definition: qwidgetaction.h:57

◆ deleteWidget()

void QWidgetAction::deleteWidget ( QWidget widget)
protectedvirtual

This function is called whenever the action is removed from a container widget that displays the action using a custom widget previously created using createWidget().

The default implementation hides the widget and schedules it for deletion using QObject::deleteLater().

See also
createWidget()

Definition at line 270 of file qwidgetaction.cpp.

Referenced by releaseWidget().

271 {
272  widget->hide();
273  widget->deleteLater();
274 }
void hide()
Hides the widget.
Definition: qwidget.h:501
void deleteLater()
Schedules this object for deletion.
Definition: qobject.cpp:2145

◆ event()

bool QWidgetAction::event ( QEvent event)
protectedvirtual

Reimplemented Function

Reimplemented from QAction.

Definition at line 227 of file qwidgetaction.cpp.

228 {
230  if (event->type() == QEvent::ActionChanged) {
231  if (d->defaultWidget)
232  d->defaultWidget->setEnabled(isEnabled());
233  for (int i = 0; i < d->createdWidgets.count(); ++i)
234  d->createdWidgets.at(i)->setEnabled(isEnabled());
235  }
236  return QAction::event(event);
237 }
double d
Definition: qnumeric_p.h:62
bool event(QEvent *)
Reimplemented Function
Definition: qaction.cpp:1256
bool isEnabled() const
Definition: qaction.cpp:1208
#define Q_D(Class)
Definition: qglobal.h:2482
The QWidgetAction class extends QAction by an interface for inserting custom widgets into action base...
Definition: qwidgetaction.h:57
Type type() const
Returns the event type.
Definition: qcoreevent.h:303

◆ eventFilter()

bool QWidgetAction::eventFilter ( QObject obj,
QEvent event 
)
protectedvirtual

Reimplemented Function

Reimplemented from QObject.

Definition at line 242 of file qwidgetaction.cpp.

243 {
244  return QAction::eventFilter(obj,event);
245 }
virtual bool eventFilter(QObject *, QEvent *)
Filters events if this object has been installed as an event filter for the watched object...
Definition: qobject.cpp:1375

◆ releaseWidget()

void QWidgetAction::releaseWidget ( QWidget widget)

Releases the specified widget.

Container widgets that support actions call this function when a widget action is removed.

See also
requestWidget(), deleteWidget(), defaultWidget()

Definition at line 204 of file qwidgetaction.cpp.

Referenced by QToolBarLayout::takeAt(), and QMenu::~QMenu().

205 {
207 
208  if (widget == d->defaultWidget) {
209  d->defaultWidget->hide();
210  d->defaultWidget->setParent(0);
211  d->defaultWidgetInUse = false;
212  return;
213  }
214 
215  if (!d->createdWidgets.contains(widget))
216  return;
217 
218  disconnect(widget, SIGNAL(destroyed(QObject*)),
219  this, SLOT(_q_widgetDestroyed(QObject*)));
220  d->createdWidgets.removeAll(widget);
221  deleteWidget(widget);
222 }
double d
Definition: qnumeric_p.h:62
#define SLOT(a)
Definition: qobjectdefs.h:226
The QObject class is the base class of all Qt objects.
Definition: qobject.h:111
#define Q_D(Class)
Definition: qglobal.h:2482
#define SIGNAL(a)
Definition: qobjectdefs.h:227
void destroyed(QObject *=0)
This signal is emitted immediately before the object obj is destroyed, and can not be blocked...
static bool disconnect(const QObject *sender, const char *signal, const QObject *receiver, const char *member)
Disconnects signal in object sender from method in object receiver.
Definition: qobject.cpp:2895
The QWidgetAction class extends QAction by an interface for inserting custom widgets into action base...
Definition: qwidgetaction.h:57
virtual void deleteWidget(QWidget *widget)
This function is called whenever the action is removed from a container widget that displays the acti...

◆ requestWidget()

QWidget * QWidgetAction::requestWidget ( QWidget parent)

Returns a widget that represents the action, with the given parent.

Container widgets that support actions can call this function to request a widget as visual representation of the action.

See also
releaseWidget(), createWidget(), defaultWidget()

Definition at line 177 of file qwidgetaction.cpp.

178 {
180 
181  QWidget *w = createWidget(parent);
182  if (!w) {
183  if (d->defaultWidgetInUse || !d->defaultWidget)
184  return 0;
185  d->defaultWidget->setParent(parent);
186  d->defaultWidgetInUse = true;
187  return d->defaultWidget;
188  }
189 
191  this, SLOT(_q_widgetDestroyed(QObject*)));
192  d->createdWidgets.append(w);
193  return w;
194 }
double d
Definition: qnumeric_p.h:62
#define SLOT(a)
Definition: qobjectdefs.h:226
The QWidget class is the base class of all user interface objects.
Definition: qwidget.h:150
The QObject class is the base class of all Qt objects.
Definition: qobject.h:111
#define Q_D(Class)
Definition: qglobal.h:2482
#define SIGNAL(a)
Definition: qobjectdefs.h:227
void destroyed(QObject *=0)
This signal is emitted immediately before the object obj is destroyed, and can not be blocked...
static bool connect(const QObject *sender, const char *signal, const QObject *receiver, const char *member, Qt::ConnectionType=Qt::AutoConnection)
Creates a connection of the given type from the signal in the sender object to the method in the rece...
Definition: qobject.cpp:2580
The QWidgetAction class extends QAction by an interface for inserting custom widgets into action base...
Definition: qwidgetaction.h:57
virtual QWidget * createWidget(QWidget *parent)
This function is called whenever the action is added to a container widget that supports custom widge...

◆ setDefaultWidget()

void QWidgetAction::setDefaultWidget ( QWidget widget)

Sets widget to be the default widget.

The ownership is transferred to QWidgetAction. Unless createWidget() is reimplemented by a subclass to return a new widget the default widget is used when a container widget requests a widget through requestWidget().

Definition at line 141 of file qwidgetaction.cpp.

Referenced by QToolBar::addWidget(), and QToolBar::insertWidget().

142 {
144  if (widget == d->defaultWidget || d->defaultWidgetInUse)
145  return;
146  delete d->defaultWidget;
147  d->defaultWidget = widget;
148  if (!widget)
149  return;
150 
152  d->defaultWidget->hide();
153  d->defaultWidget->setParent(0);
154  d->defaultWidgetInUse = false;
155  if (!isEnabled())
156  d->defaultWidget->setEnabled(false);
157 }
double d
Definition: qnumeric_p.h:62
bool isEnabled() const
Definition: qaction.cpp:1208
QPointer< QWidget > widget
#define Q_D(Class)
Definition: qglobal.h:2482
bool isHidden() const
Returns true if the widget is hidden, otherwise returns false.
Definition: qwidget.h:1008
bool testAttribute(Qt::WidgetAttribute) const
Returns true if attribute attribute is set on this widget; otherwise returns false.
Definition: qwidget.h:1041
The QWidgetAction class extends QAction by an interface for inserting custom widgets into action base...
Definition: qwidgetaction.h:57
void setVisible(bool)
Definition: qaction.cpp:1230

Friends and Related Functions

◆ QToolBar

friend class QToolBar
friend

Definition at line 82 of file qwidgetaction.h.


The documentation for this class was generated from the following files: