Qt 6.x
The Qt SDK
Loading...
Searching...
No Matches
qquickdialog.cpp
Go to the documentation of this file.
1// Copyright (C) 2017 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 "qquickdialog_p.h"
5#include "qquickdialog_p_p.h"
9
11
16
125{
126 const QQuickDialogButtonBoxAttached *attached = qobject_cast<QQuickDialogButtonBoxAttached *>(qmlAttachedPropertiesObject<QQuickDialogButtonBox>(button, false));
127 return attached ? attached->buttonRole() : QPlatformDialogHelper::InvalidRole;
128}
129
131{
132 Q_Q(QQuickDialog);
133 q->accept();
134}
135
137{
138 Q_Q(QQuickDialog);
139 q->reject();
140}
141
143{
144 Q_Q(QQuickDialog);
145 switch (buttonRole(button)) {
147 emit q->applied();
148 break;
150 emit q->reset();
151 break;
153 emit q->discarded();
154 break;
156 emit q->helpRequested();
157 break;
158 default:
159 break;
160 }
161}
162
165{
166}
167
169 : QQuickPopup(dd, parent)
170{
171 Q_D(QQuickDialog);
172
173 // Dialogs should get active focus when opened so that e.g. Cancel closes them.
174 setFocus(true);
175
183}
184
186{
187 Q_D(QQuickDialog);
195}
196
215{
216 Q_D(const QQuickDialog);
217 return d->popupItem->title();
218}
219
221{
222 Q_D(QQuickDialog);
223 d->popupItem->setTitle(title);
224}
225
243{
244 Q_D(const QQuickDialog);
245 return d->popupItem->header();
246}
247
249{
250 Q_D(QQuickDialog);
251 QQuickItem *oldHeader = d->popupItem->header();
252 if (oldHeader == header)
253 return;
254
256
257 if (QQuickDialogButtonBox *buttonBox = qobject_cast<QQuickDialogButtonBox *>(oldHeader)) {
261 if (d->buttonBox == buttonBox)
262 d->buttonBox = nullptr;
263 }
264
265 if (QQuickDialogButtonBox *buttonBox = qobject_cast<QQuickDialogButtonBox *>(header)) {
269 d->buttonBox = buttonBox;
270 buttonBox->setStandardButtons(d->standardButtons);
271 }
272
273 d->popupItem->setHeader(header);
274}
275
293{
294 Q_D(const QQuickDialog);
295 return d->popupItem->footer();
296}
297
299{
300 Q_D(QQuickDialog);
301 QQuickItem *oldFooter = d->popupItem->footer();
302 if (oldFooter == footer)
303 return;
304
306
307 if (QQuickDialogButtonBox *buttonBox = qobject_cast<QQuickDialogButtonBox *>(oldFooter)) {
311 if (d->buttonBox == buttonBox)
312 d->buttonBox = nullptr;
313 }
314 if (QQuickDialogButtonBox *buttonBox = qobject_cast<QQuickDialogButtonBox *>(footer)) {
318 d->buttonBox = buttonBox;
319 buttonBox->setStandardButtons(d->standardButtons);
320 }
321
322 d->popupItem->setFooter(footer);
323}
324
357QPlatformDialogHelper::StandardButtons QQuickDialog::standardButtons() const
358{
359 Q_D(const QQuickDialog);
360 return d->standardButtons;
361}
362
363void QQuickDialog::setStandardButtons(QPlatformDialogHelper::StandardButtons buttons)
364{
365 Q_D(QQuickDialog);
366 if (d->standardButtons == buttons)
367 return;
368
369 d->standardButtons = buttons;
370 if (d->buttonBox)
371 d->buttonBox->setStandardButtons(buttons);
373}
374
383QQuickAbstractButton *QQuickDialog::standardButton(QPlatformDialogHelper::StandardButton button) const
384{
385 Q_D(const QQuickDialog);
386 if (!d->buttonBox)
387 return nullptr;
388 return d->buttonBox->standardButton(button);
389}
390
404{
405 Q_D(const QQuickDialog);
406 return d->result;
407}
408
410{
411 Q_D(QQuickDialog);
412 if (d->result == result)
413 return;
414
415 d->result = result;
416 emit resultChanged();
417}
418
431{
432 Q_D(const QQuickDialog);
433 return d->popupItem->implicitHeaderWidth();
434}
435
448{
449 Q_D(const QQuickDialog);
450 return d->popupItem->implicitHeaderHeight();
451}
452
465{
466 Q_D(const QQuickDialog);
467 return d->popupItem->implicitFooterWidth();
468}
469
482{
483 Q_D(const QQuickDialog);
484 return d->popupItem->implicitFooterHeight();
485}
486
495{
496 done(Accepted);
497}
498
507{
508 done(Rejected);
509}
510
526{
528
529 if (result == Accepted)
530 emit accepted();
531 else if (result == Rejected)
532 emit rejected();
533
534 close();
535}
536
537#if QT_CONFIG(accessibility)
538QAccessible::Role QQuickDialog::accessibleRole() const
539{
540 return QAccessible::Dialog;
541}
542
543void QQuickDialog::accessibilityActiveChanged(bool active)
544{
545 Q_D(QQuickDialog);
546 QQuickPopup::accessibilityActiveChanged(active);
547
548 if (active)
549 maybeSetAccessibleName(d->popupItem->title());
550}
551#endif
552
554
555#include "moc_qquickdialog_p.cpp"
static QMetaObject::Connection connect(const typename QtPrivate::FunctionPointer< Func1 >::Object *sender, Func1 signal, const typename QtPrivate::FunctionPointer< Func2 >::Object *receiverPrivate, Func2 slot, Qt::ConnectionType type=Qt::AutoConnection)
Definition qobject_p.h:298
static bool disconnect(const typename QtPrivate::FunctionPointer< Func1 >::Object *sender, Func1 signal, const typename QtPrivate::FunctionPointer< Func2 >::Object *receiverPrivate, Func2 slot)
Definition qobject_p.h:327
\inmodule QtCore
Definition qobject.h:90
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
static bool disconnect(const QObject *sender, const char *signal, const QObject *receiver, const char *member)
\threadsafe
Definition qobject.cpp:3099
static void warnIfCustomizationNotSupported(QObject *control, QQuickItem *item, const QString &propertyName)
QPlatformDialogHelper::ButtonRole buttonRole
void clicked(QQuickAbstractButton *button)
virtual void handleClick(QQuickAbstractButton *button)
virtual void handleAccept()
static QPlatformDialogHelper::ButtonRole buttonRole(QQuickAbstractButton *button)
Popup dialog with standard buttons and a title, used for short-term interaction with the user.
virtual void handleReject()
void setTitle(const QString &title)
void setFooter(QQuickItem *footer)
qreal implicitHeaderWidth
void setResult(int result)
QQuickDialog(QObject *parent=nullptr)
void implicitHeaderHeightChanged()
qreal implicitHeaderHeight
QQuickItem * footer
qreal implicitFooterHeight
QPlatformDialogHelper::StandardButtons standardButtons
void accepted()
qreal implicitFooterWidth
virtual void accept()
\qmlmethod void QtQuick.Controls::Dialog::accept()
void implicitFooterHeightChanged()
void setStandardButtons(QPlatformDialogHelper::StandardButtons buttons)
void footerChanged()
void titleChanged()
void implicitFooterWidthChanged()
void implicitHeaderWidthChanged()
void standardButtonsChanged()
void setHeader(QQuickItem *header)
void headerChanged()
virtual void reject()
\qmlmethod void QtQuick.Controls::Dialog::reject()
virtual void done(int result)
void rejected()
QQuickItem * header
The QQuickItem class provides the most basic of all visual items in \l {Qt Quick}.
Definition qquickitem.h:64
void headerChanged()
void implicitHeaderHeightChanged()
void implicitHeaderWidthChanged()
void implicitFooterWidthChanged()
void titleChanged()
void implicitFooterHeightChanged()
void footerChanged()
void close()
\qmlmethod void QtQuick.Controls::Popup::close()
void maybeSetAccessibleName(const QString &name)
\macro QT_RESTRICTED_CAST_FROM_ASCII
Definition qstring.h:127
QPushButton * button
[2]
Combined button and popup list for selecting options.
static QString header(const QString &name)
GLdouble GLdouble GLdouble GLdouble q
Definition qopenglext.h:259
GLuint64EXT * result
[6]
#define QStringLiteral(str)
#define emit
double qreal
Definition qtypes.h:92
QString title
[35]
IUIAutomationTreeWalker __RPC__deref_out_opt IUIAutomationElement ** parent