diff options
-rw-r--r-- | src/imports/controls/doc/src/qtquickcontrols2-customize.qdoc | 12 | ||||
-rw-r--r-- | src/imports/controls/doc/src/qtquickcontrols2-styles.qdoc | 1 | ||||
-rw-r--r-- | src/quicktemplates2/qquickcombobox.cpp | 2 | ||||
-rw-r--r-- | src/quicktemplates2/qquickcontrol.cpp | 1 | ||||
-rw-r--r-- | tests/auto/controls/data/tst_popup.qml | 8 | ||||
-rw-r--r-- | tests/auto/customization/tst_customization.cpp | 14 |
6 files changed, 36 insertions, 2 deletions
diff --git a/src/imports/controls/doc/src/qtquickcontrols2-customize.qdoc b/src/imports/controls/doc/src/qtquickcontrols2-customize.qdoc index eed9ff94..3ab07ae2 100644 --- a/src/imports/controls/doc/src/qtquickcontrols2-customize.qdoc +++ b/src/imports/controls/doc/src/qtquickcontrols2-customize.qdoc @@ -122,6 +122,9 @@ their actual counterparts in the Qt Quick Controls 2 module. You can repeat this process for any control that you wish to add. + An added benefit of these three methods is that it's not necessary to + implement the template from scratch. + \section1 Creating a Custom Style There are several ways to go about creating your own styles. Below, we'll @@ -130,12 +133,19 @@ \section2 Definition of a Style In Qt Quick Controls 2, a style is essentially an interchangeable set of - QML files within a single directory. There are two requirements for a style + QML files within a single directory. There are three requirements for a style to be \l {Using Styles in Qt Quick Controls 2}{usable}: \list \li At least one QML file whose name matches a control (for example, \c Button.qml) must exist. + \li Each QML file must contain the relevant type from the \l {Qt Quick Templates 2} + {QtQuick.Templates} import as the root item. For example, + Button.qml must contain a Button template as its root item. + + If we instead used the corresponding type from the \l {Qt Quick Controls 2} + {QtQuick.Controls} import as we did in the previous section, it would not work: + the control we were defining would try to derive from itself. \li The files must be in a directory in the filesystem or in the \l {The Qt Resource System}{resource system}. diff --git a/src/imports/controls/doc/src/qtquickcontrols2-styles.qdoc b/src/imports/controls/doc/src/qtquickcontrols2-styles.qdoc index 21eca464..a1a74ec9 100644 --- a/src/imports/controls/doc/src/qtquickcontrols2-styles.qdoc +++ b/src/imports/controls/doc/src/qtquickcontrols2-styles.qdoc @@ -137,6 +137,7 @@ \li \l {Imagine Style} \li \l {Material Style} \li \l {Universal Style} + \li \l {Customizing Qt Quick Controls 2} \li \l {Using File Selectors with Qt Quick Controls 2} \li \l {Deploying Qt Quick Controls 2 Applications} \li \l {Qt Quick Controls 2 Configuration File} diff --git a/src/quicktemplates2/qquickcombobox.cpp b/src/quicktemplates2/qquickcombobox.cpp index f1e05b7e..b4d9bead 100644 --- a/src/quicktemplates2/qquickcombobox.cpp +++ b/src/quicktemplates2/qquickcombobox.cpp @@ -1647,9 +1647,9 @@ void QQuickComboBox::componentComplete() { Q_D(QQuickComboBox); d->executeIndicator(true); + QQuickControl::componentComplete(); if (d->popup) d->executePopup(true); - QQuickControl::componentComplete(); if (d->delegateModel && d->ownModel) static_cast<QQmlDelegateModel *>(d->delegateModel)->componentComplete(); diff --git a/src/quicktemplates2/qquickcontrol.cpp b/src/quicktemplates2/qquickcontrol.cpp index 080317d8..67c89729 100644 --- a/src/quicktemplates2/qquickcontrol.cpp +++ b/src/quicktemplates2/qquickcontrol.cpp @@ -1446,6 +1446,7 @@ void QQuickControl::componentComplete() d->executeBackground(true); d->executeContentItem(true); QQuickItem::componentComplete(); + d->resizeBackground(); d->resizeContent(); if (!d->hasLocale) d->locale = QQuickControlPrivate::calcLocale(d->parentItem); diff --git a/tests/auto/controls/data/tst_popup.qml b/tests/auto/controls/data/tst_popup.qml index 88ec295f..3f9f5e48 100644 --- a/tests/auto/controls/data/tst_popup.qml +++ b/tests/auto/controls/data/tst_popup.qml @@ -1261,4 +1261,12 @@ TestCase { control.open() verify(control.visible) } + + function test_deferredBackgroundSize() { + var control = createTemporaryObject(popupControl, testCase, {width: 200, height: 100}) + verify(control) + + compare(control.background.width, 200 + (control.background.leftInset || 0) + (control.background.rightInset || 0)) + compare(control.background.height, 100 + (control.background.topInset || 0) + (control.background.bottomInset || 0)) + } } diff --git a/tests/auto/customization/tst_customization.cpp b/tests/auto/customization/tst_customization.cpp index 91b5706c..91646653 100644 --- a/tests/auto/customization/tst_customization.cpp +++ b/tests/auto/customization/tst_customization.cpp @@ -487,6 +487,20 @@ void tst_customization::comboPopup() QTest::mouseClick(&window, Qt::LeftButton, Qt::NoModifier, QPoint(1, 1)); QVERIFY(qt_createdQObjects()->contains("combobox-popup-simple")); } + + reset(); + + { + // test that ComboBox::popup is completed upon component completion (if appropriate) + QQmlComponent component(engine); + component.setData("import QtQuick 2.9; import QtQuick.Controls 2.2; ComboBox { id: control; contentItem: Item { visible: !control.popup.visible } popup: Popup { property bool wasCompleted: false; Component.onCompleted: wasCompleted = true } }", QUrl()); + QScopedPointer<QQuickItem> comboBox(qobject_cast<QQuickItem *>(component.create())); + QVERIFY(comboBox); + + QObject *popup = comboBox->property("popup").value<QObject *>(); + QVERIFY(popup); + QCOMPARE(popup->property("wasCompleted"), QVariant(true)); + } } QTEST_MAIN(tst_customization) |