Qt 6.x
The Qt SDK
Loading...
Searching...
No Matches
qwidgetaction.cpp
Go to the documentation of this file.
1// Copyright (C) 2016 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
3
4#include "qwidgetaction.h"
5#include "qwidget.h"
6#include "qdebug.h"
7
8#include "qwidgetaction_p.h"
9
11
76{
77}
78
83{
84 Q_D(QWidgetAction);
85 for (int i = 0; i < d->createdWidgets.size(); ++i)
86 disconnect(d->createdWidgets.at(i), SIGNAL(destroyed(QObject*)),
87 this, SLOT(_q_widgetDestroyed(QObject*)));
88 QList<QWidget *> widgetsToDelete = d->createdWidgets;
89 d->createdWidgets.clear();
90 qDeleteAll(widgetsToDelete);
91 delete d->defaultWidget;
92}
93
102{
103 Q_D(QWidgetAction);
104 if (widget == d->defaultWidget || d->defaultWidgetInUse)
105 return;
106 delete d->defaultWidget;
107 d->defaultWidget = widget;
108 if (!widget)
109 return;
110
112 d->defaultWidget->hide();
113 d->defaultWidget->setParent(nullptr);
114 d->defaultWidgetInUse = false;
115 if (!isEnabled())
116 d->defaultWidget->setEnabled(false);
117}
118
123{
124 Q_D(const QWidgetAction);
125 return d->defaultWidget;
126}
127
138{
139 Q_D(QWidgetAction);
140
142 if (!w) {
143 if (d->defaultWidgetInUse || !d->defaultWidget)
144 return nullptr;
145 d->defaultWidget->setParent(parent);
146 d->defaultWidgetInUse = true;
147 return d->defaultWidget;
148 }
149
151 this, SLOT(_q_widgetDestroyed(QObject*)));
152 d->createdWidgets.append(w);
153 return w;
154}
155
165{
166 Q_D(QWidgetAction);
167
168 if (widget == d->defaultWidget) {
169 d->defaultWidget->hide();
170 d->defaultWidget->setParent(nullptr);
171 d->defaultWidgetInUse = false;
172 return;
173 }
174
175 if (!d->createdWidgets.contains(widget))
176 return;
177
179 this, SLOT(_q_widgetDestroyed(QObject*)));
180 d->createdWidgets.removeAll(widget);
182}
183
188{
189 Q_D(QWidgetAction);
190 if (event->type() == QEvent::ActionChanged) {
191 if (d->defaultWidget)
192 d->defaultWidget->setEnabled(isEnabled());
193 for (int i = 0; i < d->createdWidgets.size(); ++i)
194 d->createdWidgets.at(i)->setEnabled(isEnabled());
195 }
196 return QAction::event(event);
197}
198
203{
205}
206
216{
218 return nullptr;
219}
220
231{
232 widget->hide();
234}
235
241{
242 Q_D(const QWidgetAction);
243 return d->createdWidgets;
244}
245
247
248#include "moc_qwidgetaction.cpp"
The QAction class provides an abstraction for user commands that can be added to different user inter...
Definition qaction.h:30
bool event(QEvent *) override
\reimp
Definition qaction.cpp:1027
void setVisible(bool)
Definition qaction.cpp:990
bool isEnabled() const
Definition qaction.cpp:971
\inmodule QtCore
Definition qcoreevent.h:45
@ ActionChanged
Definition qcoreevent.h:151
Definition qlist.h:74
\inmodule QtCore
Definition qobject.h:90
QObject * parent() const
Returns a pointer to the parent object.
Definition qobject.h:311
static QMetaObject::Connection connect(const QObject *sender, const char *signal, const QObject *receiver, const char *member, Qt::ConnectionType=Qt::AutoConnection)
\threadsafe
Definition qobject.cpp:2823
virtual bool eventFilter(QObject *watched, QEvent *event)
Filters events if this object has been installed as an event filter for the watched object.
Definition qobject.cpp:1518
void destroyed(QObject *=nullptr)
This signal is emitted immediately before the object obj is destroyed, after any instances of QPointe...
void deleteLater()
\threadsafe
Definition qobject.cpp:2352
The QWidgetAction class extends QAction by an interface for inserting custom widgets into action base...
QWidget * requestWidget(QWidget *parent)
Returns a widget that represents the action, with the given parent.
QWidget * defaultWidget() const
Returns the default widget.
QWidgetAction(QObject *parent)
Constructs an action with parent.
virtual bool event(QEvent *) override
\reimp
void releaseWidget(QWidget *widget)
Releases the specified widget.
virtual void deleteWidget(QWidget *widget)
This function is called whenever the action is removed from a container widget that displays the acti...
virtual ~QWidgetAction()
Destroys the object and frees allocated resources.
virtual bool eventFilter(QObject *, QEvent *) override
\reimp
QList< QWidget * > createdWidgets() const
Returns the list of widgets that have been using createWidget() and are currently in use by widgets t...
void setDefaultWidget(QWidget *w)
Sets widget to be the default widget.
virtual QWidget * createWidget(QWidget *parent)
This function is called whenever the action is added to a container widget that supports custom widge...
The QWidget class is the base class of all user interface objects.
Definition qwidget.h:99
bool isHidden() const
Returns true if the widget is hidden, otherwise returns false.
Definition qwidget.h:877
void hide()
Hides the widget.
Definition qwidget.cpp:8209
bool testAttribute(Qt::WidgetAttribute) const
Returns true if attribute attribute is set on this widget; otherwise returns false.
Definition qwidget.h:910
QOpenGLWidget * widget
[1]
qDeleteAll(list.begin(), list.end())
Combined button and popup list for selecting options.
@ WA_WState_ExplicitShowHide
Definition qnamespace.h:334
#define SLOT(a)
Definition qobjectdefs.h:51
#define SIGNAL(a)
Definition qobjectdefs.h:52
GLfloat GLfloat GLfloat w
[0]
struct _cl_event * event
GLhandleARB obj
[2]
#define Q_UNUSED(x)
myObject disconnect()
[26]
IUIAutomationTreeWalker __RPC__deref_out_opt IUIAutomationElement ** parent