152void QQuickDialogPrivate::handleClick(QQuickAbstractButton *button)
155 switch (buttonRole(button)) {
156 case QPlatformDialogHelper::ApplyRole:
159 case QPlatformDialogHelper::ResetRole:
162 case QPlatformDialogHelper::DestructiveRole:
166 case QPlatformDialogHelper::HelpRole:
167 emit q->helpRequested();
179QQuickDialog::QQuickDialog(QQuickDialogPrivate &dd, QObject *parent)
180 : QQuickPopup(dd, parent)
186 QObject::connect(d->popupItem, &QQuickPopupItem::headerChanged,
this, &QQuickDialog::headerChanged);
187 QObject::connect(d->popupItem, &QQuickPopupItem::footerChanged,
this, &QQuickDialog::footerChanged);
188 QObject::connect(d->popupItem, &QQuickPopupItem::implicitHeaderWidthChanged,
this, &QQuickDialog::implicitHeaderWidthChanged);
189 QObject::connect(d->popupItem, &QQuickPopupItem::implicitHeaderHeightChanged,
this, &QQuickDialog::implicitHeaderHeightChanged);
190 QObject::connect(d->popupItem, &QQuickPopupItem::implicitFooterWidthChanged,
this, &QQuickDialog::implicitFooterWidthChanged);
191 QObject::connect(d->popupItem, &QQuickPopupItem::implicitFooterHeightChanged,
this, &QQuickDialog::implicitFooterHeightChanged);
194QQuickDialog::~QQuickDialog()
197 QObject::disconnect(d->popupItem, &QQuickPopupItem::headerChanged,
this, &QQuickDialog::headerChanged);
198 QObject::disconnect(d->popupItem, &QQuickPopupItem::footerChanged,
this, &QQuickDialog::footerChanged);
199 QObject::disconnect(d->popupItem, &QQuickPopupItem::implicitHeaderWidthChanged,
this, &QQuickDialog::implicitHeaderWidthChanged);
200 QObject::disconnect(d->popupItem, &QQuickPopupItem::implicitHeaderHeightChanged,
this, &QQuickDialog::implicitHeaderHeightChanged);
201 QObject::disconnect(d->popupItem, &QQuickPopupItem::implicitFooterWidthChanged,
this, &QQuickDialog::implicitFooterWidthChanged);
202 QObject::disconnect(d->popupItem, &QQuickPopupItem::implicitFooterHeightChanged,
this, &QQuickDialog::implicitFooterHeightChanged);
265void QQuickDialog::setHeader(QQuickItem *header)
268 QQuickItem *oldHeader = d->popupItem->header();
269 if (oldHeader == header)
272 QQuickControlPrivate::warnIfCustomizationNotSupported(
this, header, QStringLiteral(
"header"));
274 if (QQuickDialogButtonBox *buttonBox = qobject_cast<QQuickDialogButtonBox *>(oldHeader)) {
275 QObjectPrivate::disconnect(buttonBox, &QQuickDialogButtonBox::accepted, d, &QQuickDialogPrivate::handleAccept);
276 QObjectPrivate::disconnect(buttonBox, &QQuickDialogButtonBox::rejected, d, &QQuickDialogPrivate::handleReject);
277 QObjectPrivate::disconnect(buttonBox, &QQuickDialogButtonBox::clicked, d, &QQuickDialogPrivate::handleClick);
278 if (d->buttonBox == buttonBox)
279 d->buttonBox =
nullptr;
282 if (QQuickDialogButtonBox *buttonBox = qobject_cast<QQuickDialogButtonBox *>(header)) {
283 QObjectPrivate::connect(buttonBox, &QQuickDialogButtonBox::accepted, d, &QQuickDialogPrivate::handleAccept);
284 QObjectPrivate::connect(buttonBox, &QQuickDialogButtonBox::rejected, d, &QQuickDialogPrivate::handleReject);
285 QObjectPrivate::connect(buttonBox, &QQuickDialogButtonBox::clicked, d, &QQuickDialogPrivate::handleClick);
286 d->buttonBox = buttonBox;
287 buttonBox->setStandardButtons(d->standardButtons);
290 d->popupItem->setHeader(header);
315void QQuickDialog::setFooter(QQuickItem *footer)
318 QQuickItem *oldFooter = d->popupItem->footer();
319 if (oldFooter == footer)
322 QQuickControlPrivate::warnIfCustomizationNotSupported(
this, footer, QStringLiteral(
"footer"));
324 if (QQuickDialogButtonBox *buttonBox = qobject_cast<QQuickDialogButtonBox *>(oldFooter)) {
325 QObjectPrivate::disconnect(buttonBox, &QQuickDialogButtonBox::accepted, d, &QQuickDialogPrivate::handleAccept);
326 QObjectPrivate::disconnect(buttonBox, &QQuickDialogButtonBox::rejected, d, &QQuickDialogPrivate::handleReject);
327 QObjectPrivate::disconnect(buttonBox, &QQuickDialogButtonBox::clicked, d, &QQuickDialogPrivate::handleClick);
328 if (d->buttonBox == buttonBox)
329 d->buttonBox =
nullptr;
331 if (QQuickDialogButtonBox *buttonBox = qobject_cast<QQuickDialogButtonBox *>(footer)) {
332 QObjectPrivate::connect(buttonBox, &QQuickDialogButtonBox::accepted, d, &QQuickDialogPrivate::handleAccept);
333 QObjectPrivate::connect(buttonBox, &QQuickDialogButtonBox::rejected, d, &QQuickDialogPrivate::handleReject);
334 QObjectPrivate::connect(buttonBox, &QQuickDialogButtonBox::clicked, d, &QQuickDialogPrivate::handleClick);
335 d->buttonBox = buttonBox;
336 buttonBox->setStandardButtons(d->standardButtons);
339 d->popupItem->setFooter(footer);
380void QQuickDialog::setStandardButtons(QPlatformDialogHelper::StandardButtons buttons)
383 if (d->standardButtons == buttons)
386 d->standardButtons = buttons;
388 d->buttonBox->setStandardButtons(buttons);
389 emit standardButtonsChanged();
560void QQuickDialog::itemChange(QQuickItem::ItemChange change,
const QQuickItem::ItemChangeData &data)
562 QQuickPopup::itemChange(change, data);
564 if (change != QQuickItem::ItemVisibleHasChanged || !isComponentComplete() || !data.boolValue)
568 if (d->buttonBox && QQuickItemPrivate::get(d->popupItem)->subFocusItem ==
nullptr) {
569 for (
int i = 0; i < d->buttonBox->count(); ++i) {
570 QQuickItem *item = qobject_cast<QQuickItem *>(d->buttonBox->itemAt(i));
571 if (item && item->isEnabled()) {
572 d->buttonBox->setFocus(
true, Qt::OtherFocusReason);