150void QQuickDialogPrivate::handleClick(QQuickAbstractButton *button)
153 switch (buttonRole(button)) {
154 case QPlatformDialogHelper::ApplyRole:
157 case QPlatformDialogHelper::ResetRole:
160 case QPlatformDialogHelper::DestructiveRole:
164 case QPlatformDialogHelper::HelpRole:
165 emit q->helpRequested();
182QQuickDialog::QQuickDialog(QQuickDialogPrivate &dd, QObject *parent)
183 : QQuickPopup(dd, parent)
189 QObject::connect(d->popupItem, &QQuickPopupItem::headerChanged,
this, &QQuickDialog::headerChanged);
190 QObject::connect(d->popupItem, &QQuickPopupItem::footerChanged,
this, &QQuickDialog::footerChanged);
191 QObject::connect(d->popupItem, &QQuickPopupItem::implicitHeaderWidthChanged,
this, &QQuickDialog::implicitHeaderWidthChanged);
192 QObject::connect(d->popupItem, &QQuickPopupItem::implicitHeaderHeightChanged,
this, &QQuickDialog::implicitHeaderHeightChanged);
193 QObject::connect(d->popupItem, &QQuickPopupItem::implicitFooterWidthChanged,
this, &QQuickDialog::implicitFooterWidthChanged);
194 QObject::connect(d->popupItem, &QQuickPopupItem::implicitFooterHeightChanged,
this, &QQuickDialog::implicitFooterHeightChanged);
197QQuickDialog::~QQuickDialog()
200 QObject::disconnect(d->popupItem, &QQuickPopupItem::headerChanged,
this, &QQuickDialog::headerChanged);
201 QObject::disconnect(d->popupItem, &QQuickPopupItem::footerChanged,
this, &QQuickDialog::footerChanged);
202 QObject::disconnect(d->popupItem, &QQuickPopupItem::implicitHeaderWidthChanged,
this, &QQuickDialog::implicitHeaderWidthChanged);
203 QObject::disconnect(d->popupItem, &QQuickPopupItem::implicitHeaderHeightChanged,
this, &QQuickDialog::implicitHeaderHeightChanged);
204 QObject::disconnect(d->popupItem, &QQuickPopupItem::implicitFooterWidthChanged,
this, &QQuickDialog::implicitFooterWidthChanged);
205 QObject::disconnect(d->popupItem, &QQuickPopupItem::implicitFooterHeightChanged,
this, &QQuickDialog::implicitFooterHeightChanged);
268void QQuickDialog::setHeader(QQuickItem *header)
271 QQuickItem *oldHeader = d->popupItem->header();
272 if (oldHeader == header)
275 QQuickControlPrivate::warnIfCustomizationNotSupported(
this, header, QStringLiteral(
"header"));
277 if (QQuickDialogButtonBox *buttonBox = qobject_cast<QQuickDialogButtonBox *>(oldHeader)) {
278 QObjectPrivate::disconnect(buttonBox, &QQuickDialogButtonBox::accepted, d, &QQuickDialogPrivate::handleAccept);
279 QObjectPrivate::disconnect(buttonBox, &QQuickDialogButtonBox::rejected, d, &QQuickDialogPrivate::handleReject);
280 QObjectPrivate::disconnect(buttonBox, &QQuickDialogButtonBox::clicked, d, &QQuickDialogPrivate::handleClick);
281 if (d->buttonBox == buttonBox)
282 d->buttonBox =
nullptr;
285 if (QQuickDialogButtonBox *buttonBox = qobject_cast<QQuickDialogButtonBox *>(header)) {
286 QObjectPrivate::connect(buttonBox, &QQuickDialogButtonBox::accepted, d, &QQuickDialogPrivate::handleAccept);
287 QObjectPrivate::connect(buttonBox, &QQuickDialogButtonBox::rejected, d, &QQuickDialogPrivate::handleReject);
288 QObjectPrivate::connect(buttonBox, &QQuickDialogButtonBox::clicked, d, &QQuickDialogPrivate::handleClick);
289 d->buttonBox = buttonBox;
290 buttonBox->setStandardButtons(d->standardButtons);
293 d->popupItem->setHeader(header);
318void QQuickDialog::setFooter(QQuickItem *footer)
321 QQuickItem *oldFooter = d->popupItem->footer();
322 if (oldFooter == footer)
325 QQuickControlPrivate::warnIfCustomizationNotSupported(
this, footer, QStringLiteral(
"footer"));
327 if (QQuickDialogButtonBox *buttonBox = qobject_cast<QQuickDialogButtonBox *>(oldFooter)) {
328 QObjectPrivate::disconnect(buttonBox, &QQuickDialogButtonBox::accepted, d, &QQuickDialogPrivate::handleAccept);
329 QObjectPrivate::disconnect(buttonBox, &QQuickDialogButtonBox::rejected, d, &QQuickDialogPrivate::handleReject);
330 QObjectPrivate::disconnect(buttonBox, &QQuickDialogButtonBox::clicked, d, &QQuickDialogPrivate::handleClick);
331 if (d->buttonBox == buttonBox)
332 d->buttonBox =
nullptr;
334 if (QQuickDialogButtonBox *buttonBox = qobject_cast<QQuickDialogButtonBox *>(footer)) {
335 QObjectPrivate::connect(buttonBox, &QQuickDialogButtonBox::accepted, d, &QQuickDialogPrivate::handleAccept);
336 QObjectPrivate::connect(buttonBox, &QQuickDialogButtonBox::rejected, d, &QQuickDialogPrivate::handleReject);
337 QObjectPrivate::connect(buttonBox, &QQuickDialogButtonBox::clicked, d, &QQuickDialogPrivate::handleClick);
338 d->buttonBox = buttonBox;
339 buttonBox->setStandardButtons(d->standardButtons);
342 d->popupItem->setFooter(footer);
383void QQuickDialog::setStandardButtons(QPlatformDialogHelper::StandardButtons buttons)
386 if (d->standardButtons == buttons)
389 d->standardButtons = buttons;
391 d->buttonBox->setStandardButtons(buttons);
392 emit standardButtonsChanged();