From 52e933ce2b10b0e1b48afa9ce048552830309da7 Mon Sep 17 00:00:00 2001 From: J-P Nurmi Date: Sat, 22 Oct 2016 21:18:52 +0200 Subject: Add QQuickDialog::title Dialog is incomplete without built-in support for title. All dialogs in the examples, screenshots, webinars, and blog posts have had a custom title. The Material and Universal designs both have specs for dialog titles. This commit adds support for dialog titles with appropriate looks (padding & font) out of the box. Task-number: QTBUG-56711 Change-Id: I248150313f1ce629a7105fdbe1c70c8fcd69e1cc Reviewed-by: Mitch Curtis --- src/quicktemplates2/qquickdialog.cpp | 38 +++++++++++++++++++++++++++++++++- src/quicktemplates2/qquickdialog_p.h | 5 +++++ src/quicktemplates2/qquickdialog_p_p.h | 1 + 3 files changed, 43 insertions(+), 1 deletion(-) (limited to 'src/quicktemplates2') diff --git a/src/quicktemplates2/qquickdialog.cpp b/src/quicktemplates2/qquickdialog.cpp index 356e6c27..05e0f26d 100644 --- a/src/quicktemplates2/qquickdialog.cpp +++ b/src/quicktemplates2/qquickdialog.cpp @@ -56,7 +56,10 @@ QT_BEGIN_NAMESPACE \image qtquickcontrols2-page-wireframe.png - \section1 Dialog Buttons + \section1 Dialog Title and Buttons + + Dialog's \l title is displayed by a style-specific title bar that is assigned + as a dialog \l header by default. Dialog's standard buttons are managed by a \l DialogButtonBox that is assigned as a dialog \l footer by default. The dialog's \l standardButtons property is @@ -118,6 +121,39 @@ QQuickDialog::QQuickDialog(QObject *parent) : d->layout.reset(new QQuickPageLayout(d->popupItem)); } +/*! + \qmlproperty string QtQuick.Controls::Dialog::title + + This property holds the dialog title. + + The title is displayed in the dialog header. + + \code + Dialog { + title: qsTr("About") + + Label { + text: "Lorem ipsum..." + } + } + \endcode +*/ +QString QQuickDialog::title() const +{ + Q_D(const QQuickDialog); + return d->title; +} + +void QQuickDialog::setTitle(const QString &title) +{ + Q_D(QQuickDialog); + if (d->title == title) + return; + + d->title = title; + emit titleChanged(); +} + /*! \qmlproperty Item QtQuick.Controls::Dialog::header diff --git a/src/quicktemplates2/qquickdialog_p.h b/src/quicktemplates2/qquickdialog_p.h index 1cd50f4a..ff8a1e79 100644 --- a/src/quicktemplates2/qquickdialog_p.h +++ b/src/quicktemplates2/qquickdialog_p.h @@ -58,6 +58,7 @@ class QQuickDialogPrivate; class Q_QUICKTEMPLATES2_PRIVATE_EXPORT QQuickDialog : public QQuickPopup { Q_OBJECT + Q_PROPERTY(QString title READ title WRITE setTitle NOTIFY titleChanged FINAL) Q_PROPERTY(QQuickItem *header READ header WRITE setHeader NOTIFY headerChanged FINAL) Q_PROPERTY(QQuickItem *footer READ footer WRITE setFooter NOTIFY footerChanged FINAL) Q_PROPERTY(QPlatformDialogHelper::StandardButtons standardButtons READ standardButtons WRITE setStandardButtons NOTIFY standardButtonsChanged FINAL) @@ -66,6 +67,9 @@ class Q_QUICKTEMPLATES2_PRIVATE_EXPORT QQuickDialog : public QQuickPopup public: explicit QQuickDialog(QObject *parent = nullptr); + QString title() const; + void setTitle(const QString &title); + QQuickItem *header() const; void setHeader(QQuickItem *header); @@ -83,6 +87,7 @@ Q_SIGNALS: void accepted(); void rejected(); + void titleChanged(); void headerChanged(); void footerChanged(); void standardButtonsChanged(); diff --git a/src/quicktemplates2/qquickdialog_p_p.h b/src/quicktemplates2/qquickdialog_p_p.h index e5ac7066..5ea84cc8 100644 --- a/src/quicktemplates2/qquickdialog_p_p.h +++ b/src/quicktemplates2/qquickdialog_p_p.h @@ -67,6 +67,7 @@ public: return dialog->d_func(); } + QString title; QQuickDialogButtonBox *buttonBox; QScopedPointer layout; QPlatformDialogHelper::StandardButtons standardButtons; -- cgit v1.2.3