diff options
13 files changed, 38 insertions, 76 deletions
diff --git a/src/imports/controls/ProgressBar.qml b/src/imports/controls/ProgressBar.qml index 795fd231..0439cbb9 100644 --- a/src/imports/controls/ProgressBar.qml +++ b/src/imports/controls/ProgressBar.qml @@ -42,17 +42,15 @@ T.ProgressBar { id: control implicitWidth: Math.max(background ? background.implicitWidth : 0, - indicator ? indicator.implicitWidth : 0) + leftPadding + rightPadding + contentItem.implicitWidth + leftPadding + rightPadding) implicitHeight: Math.max(background ? background.implicitHeight : 0, - indicator ? indicator.implicitHeight : 0) + topPadding + bottomPadding + contentItem.implicitHeight + topPadding + bottomPadding) - //! [indicator] - indicator: ProgressStrip { + //! [contentItem] + contentItem: ProgressStrip { id: strip - x: control.leftPadding - y: control.topPadding + (control.availableHeight - height) / 2 - width: control.availableWidth - height: 6 + implicitHeight: 6 + implicitWidth: 116 scale: control.mirrored ? -1 : 1 progress: control.position indeterminate: control.indeterminate @@ -62,7 +60,7 @@ T.ProgressBar { running: control.visible && control.indeterminate } } - //! [indicator] + //! [contentItem] //! [background] background: Rectangle { diff --git a/src/imports/controls/doc/images/qtquickcontrols-progressbar-indicator.png b/src/imports/controls/doc/images/qtquickcontrols-progressbar-contentItem.png Binary files differindex 9ce19e92..9ce19e92 100644 --- a/src/imports/controls/doc/images/qtquickcontrols-progressbar-indicator.png +++ b/src/imports/controls/doc/images/qtquickcontrols-progressbar-contentItem.png diff --git a/src/imports/controls/doc/snippets/qtquickcontrols-progressbar-indicator.qml b/src/imports/controls/doc/snippets/qtquickcontrols-progressbar-contentItem.qml index 28eb99bf..0bb1b418 100644 --- a/src/imports/controls/doc/snippets/qtquickcontrols-progressbar-indicator.qml +++ b/src/imports/controls/doc/snippets/qtquickcontrols-progressbar-contentItem.qml @@ -31,9 +31,8 @@ import Qt.labs.controls 1.0 ProgressBar { value: 0.5 Rectangle { - parent: indicator - width: indicator.childrenRect.width - height: indicator.height + parent: contentItem + anchors.fill: parent color: "transparent" border.color: "red" } diff --git a/src/imports/controls/doc/src/qtlabscontrols-customize.qdoc b/src/imports/controls/doc/src/qtlabscontrols-customize.qdoc index df1ba5d0..921794a5 100644 --- a/src/imports/controls/doc/src/qtlabscontrols-customize.qdoc +++ b/src/imports/controls/doc/src/qtlabscontrols-customize.qdoc @@ -280,7 +280,7 @@ \section1 Customizing ProgressBar ProgressBar consists of two visual items: \l {Control::background}{background} - and \l {ProgressBar::indicator}{indicator}. + and \l {Control::contentItem}{content item}. \section3 Background @@ -288,11 +288,11 @@ \snippet ProgressBar.qml background - \section3 Indicator + \section3 Content item - \image qtquickcontrols-progressbar-indicator.png + \image qtquickcontrols-progressbar-contentItem.png - \snippet ProgressBar.qml indicator + \snippet ProgressBar.qml contentItem \section1 Customizing RadioButton diff --git a/src/imports/controls/material/ProgressBar.qml b/src/imports/controls/material/ProgressBar.qml index 52df1660..2493da15 100644 --- a/src/imports/controls/material/ProgressBar.qml +++ b/src/imports/controls/material/ProgressBar.qml @@ -43,17 +43,14 @@ T.ProgressBar { id: control implicitWidth: Math.max(background ? background.implicitWidth : 0, - indicator ? indicator.implicitWidth : 0) + leftPadding + rightPadding + contentItem.implicitWidth + leftPadding + rightPadding) implicitHeight: Math.max(background ? background.implicitHeight : 0, - indicator ? indicator.implicitHeight : 0) + topPadding + bottomPadding + contentItem.implicitHeight + topPadding + bottomPadding) - //! [indicator] - indicator: ProgressStrip { + //! [contentItem] + contentItem: ProgressStrip { id: strip - x: control.leftPadding - y: control.topPadding + (control.availableHeight - height) / 2 - width: control.availableWidth - height: 4 + implicitHeight: 4 scale: control.mirrored ? -1 : 1 indeterminate: control.indeterminate @@ -65,7 +62,7 @@ T.ProgressBar { running: control.visible && control.indeterminate } } - //! [indicator] + //! [contentItem] //! [background] background: Rectangle { diff --git a/src/imports/controls/material/qquickmaterialprogressstrip.cpp b/src/imports/controls/material/qquickmaterialprogressstrip.cpp index 34590340..1d3ffc20 100644 --- a/src/imports/controls/material/qquickmaterialprogressstrip.cpp +++ b/src/imports/controls/material/qquickmaterialprogressstrip.cpp @@ -207,9 +207,13 @@ QSGNode *QQuickMaterialProgressStrip::updatePaintNode(QSGNode *oldNode, UpdatePa { QQuickItemPrivate *d = QQuickItemPrivate::get(this); + QRectF bounds = boundingRect(); + bounds.setHeight(implicitHeight()); + bounds.moveTop((height() - bounds.height()) / 2.0); + if (!oldNode) - oldNode = new QSGSimpleRectNode(boundingRect(), Qt::transparent); - static_cast<QSGSimpleRectNode *>(oldNode)->setRect(boundingRect()); + oldNode = new QSGSimpleRectNode(bounds, Qt::transparent); + static_cast<QSGSimpleRectNode *>(oldNode)->setRect(bounds); const int count = m_indeterminate ? 2 : 1; const qreal w = m_indeterminate ? 0 : m_progress * width(); @@ -230,7 +234,7 @@ QSGNode *QQuickMaterialProgressStrip::updatePaintNode(QSGNode *oldNode, UpdatePa QSGRectangleNode *rectNode = static_cast<QSGRectangleNode *>(transformNode->firstChild()); Q_ASSERT(rectNode->type() == QSGNode::GeometryNodeType); - rectNode->setRect(QRectF(0, 0, w, height())); + rectNode->setRect(QRectF(0, bounds.y(), w, bounds.height())); rectNode->setColor(m_color); rectNode->update(); diff --git a/src/imports/controls/plugins.qmltypes b/src/imports/controls/plugins.qmltypes index 27d06b40..3df8d825 100644 --- a/src/imports/controls/plugins.qmltypes +++ b/src/imports/controls/plugins.qmltypes @@ -442,7 +442,6 @@ Module { Property { name: "position"; type: "double"; isReadonly: true } Property { name: "visualPosition"; type: "double"; isReadonly: true } Property { name: "indeterminate"; type: "bool" } - Property { name: "indicator"; type: "QQuickItem"; isPointer: true } } Component { name: "QQuickRadioButton" diff --git a/src/imports/controls/qquickprogressstrip.cpp b/src/imports/controls/qquickprogressstrip.cpp index 0fc72087..fc3596db 100644 --- a/src/imports/controls/qquickprogressstrip.cpp +++ b/src/imports/controls/qquickprogressstrip.cpp @@ -63,8 +63,6 @@ QQuickProgressStrip::QQuickProgressStrip(QQuickItem *parent) : m_indeterminate(false) { setFlag(QQuickItem::ItemHasContents); - setImplicitWidth(116); - setImplicitHeight(6); } QQuickProgressStrip::~QQuickProgressStrip() @@ -142,6 +140,7 @@ QSGNode *QQuickProgressStrip::updatePaintNode(QSGNode *oldNode, QQuickItem::Upda } Q_ASSERT(rootTransformNode->type() == QSGNode::TransformNodeType); + const qreal y = (height() - implicitHeight()) / 2; const QColor color(0x35, 0x36, 0x37); if (m_indeterminate) { if (rootTransformNode->childCount() != blocks) { @@ -167,7 +166,7 @@ QSGNode *QQuickProgressStrip::updatePaintNode(QSGNode *oldNode, QQuickItem::Upda m.translate(blockStartX(i), 0); transformNode->setMatrix(m); - rectNode->setRect(QRectF(QPointF(), QSizeF(blockWidth, height()))); + rectNode->setRect(QRectF(QPointF(0, y), QSizeF(blockWidth, implicitHeight()))); rectNode->update(); transformNode = static_cast<QSGTransformNode *>(transformNode->nextSibling()); @@ -185,7 +184,7 @@ QSGNode *QQuickProgressStrip::updatePaintNode(QSGNode *oldNode, QQuickItem::Upda rootTransformNode->appendChildNode(rectNode); } - rectNode->setRect(QRectF(QPointF(), QSizeF(m_progress * width(), height()))); + rectNode->setRect(QRectF(QPointF(0, y), QSizeF(m_progress * width(), implicitHeight()))); rectNode->update(); } diff --git a/src/imports/controls/universal/ProgressBar.qml b/src/imports/controls/universal/ProgressBar.qml index 308b83f7..360b7896 100644 --- a/src/imports/controls/universal/ProgressBar.qml +++ b/src/imports/controls/universal/ProgressBar.qml @@ -43,17 +43,14 @@ T.ProgressBar { id: control implicitWidth: Math.max(background ? background.implicitWidth : 0, - indicator ? indicator.implicitWidth : 0) + leftPadding + rightPadding + contentItem.implicitWidth + leftPadding + rightPadding) implicitHeight: Math.max(background ? background.implicitHeight : 0, - indicator ? indicator.implicitHeight : 0) + topPadding + bottomPadding + contentItem.implicitHeight + topPadding + bottomPadding) - //! [indicator] - indicator: ProgressStrip { + //! [contentItem] + contentItem: ProgressStrip { id: strip - x: control.leftPadding - y: control.topPadding + (control.availableHeight - height) / 2 - width: control.availableWidth - height: 10 + implicitHeight: 10 scale: control.mirrored ? -1 : 1 indeterminate: control.indeterminate @@ -66,7 +63,7 @@ T.ProgressBar { running: control.visible && control.indeterminate } } - //! [indicator] + //! [contentItem] //! [background] background: Rectangle { diff --git a/src/imports/controls/universal/qquickuniversalprogressstrip.cpp b/src/imports/controls/universal/qquickuniversalprogressstrip.cpp index 750970da..f23e91da 100644 --- a/src/imports/controls/universal/qquickuniversalprogressstrip.cpp +++ b/src/imports/controls/universal/qquickuniversalprogressstrip.cpp @@ -281,6 +281,8 @@ QSGNode *QQuickUniversalProgressStrip::updatePaintNode(QSGNode *oldNode, UpdateP QQuickItemPrivate *d = QQuickItemPrivate::get(this); QRectF bounds = boundingRect(); + bounds.setHeight(implicitHeight()); + bounds.moveTop((height() - bounds.height()) / 2.0); if (!m_indeterminate) bounds.setWidth(m_progress * bounds.width()); diff --git a/src/imports/templates/plugins.qmltypes b/src/imports/templates/plugins.qmltypes index ebc4f5dd..0c75504b 100644 --- a/src/imports/templates/plugins.qmltypes +++ b/src/imports/templates/plugins.qmltypes @@ -436,7 +436,6 @@ Module { Property { name: "position"; type: "double"; isReadonly: true } Property { name: "visualPosition"; type: "double"; isReadonly: true } Property { name: "indeterminate"; type: "bool" } - Property { name: "indicator"; type: "QQuickItem"; isPointer: true } } Component { name: "QQuickRadioButton" diff --git a/src/templates/qquickprogressbar.cpp b/src/templates/qquickprogressbar.cpp index d9b417af..2be0a776 100644 --- a/src/templates/qquickprogressbar.cpp +++ b/src/templates/qquickprogressbar.cpp @@ -71,7 +71,7 @@ QT_BEGIN_NAMESPACE class QQuickProgressBarPrivate : public QQuickControlPrivate { public: - QQuickProgressBarPrivate() : from(0), to(1.0), value(0), indeterminate(false), indicator(nullptr) + QQuickProgressBarPrivate() : from(0), to(1.0), value(0), indeterminate(false) { } @@ -79,7 +79,6 @@ public: qreal to; qreal value; bool indeterminate; - QQuickItem *indicator; }; QQuickProgressBar::QQuickProgressBar(QQuickItem *parent) : @@ -236,32 +235,6 @@ void QQuickProgressBar::setIndeterminate(bool indeterminate) emit indeterminateChanged(); } -/*! - \qmlproperty Item Qt.labs.controls::ProgressBar::indicator - - This property holds the graphical representation of the progress bar. - - \sa {Customizing ProgressBar} -*/ -QQuickItem *QQuickProgressBar::indicator() const -{ - Q_D(const QQuickProgressBar); - return d->indicator; -} - -void QQuickProgressBar::setIndicator(QQuickItem *indicator) -{ - Q_D(QQuickProgressBar); - if (d->indicator == indicator) - return; - - delete d->indicator; - d->indicator = indicator; - if (indicator && !indicator->parentItem()) - indicator->setParentItem(this); - emit indicatorChanged(); -} - void QQuickProgressBar::mirrorChange() { QQuickControl::mirrorChange(); diff --git a/src/templates/qquickprogressbar_p.h b/src/templates/qquickprogressbar_p.h index 7fdbbd96..9d37a5f9 100644 --- a/src/templates/qquickprogressbar_p.h +++ b/src/templates/qquickprogressbar_p.h @@ -63,7 +63,6 @@ class Q_QUICKTEMPLATES_EXPORT QQuickProgressBar : public QQuickControl Q_PROPERTY(qreal position READ position NOTIFY positionChanged FINAL) Q_PROPERTY(qreal visualPosition READ visualPosition NOTIFY visualPositionChanged FINAL) Q_PROPERTY(bool indeterminate READ isIndeterminate WRITE setIndeterminate NOTIFY indeterminateChanged FINAL) - Q_PROPERTY(QQuickItem *indicator READ indicator WRITE setIndicator NOTIFY indicatorChanged FINAL) public: explicit QQuickProgressBar(QQuickItem *parent = nullptr); @@ -83,9 +82,6 @@ public: bool isIndeterminate() const; void setIndeterminate(bool indeterminate); - QQuickItem *indicator() const; - void setIndicator(QQuickItem *indicator); - Q_SIGNALS: void fromChanged(); void toChanged(); @@ -93,7 +89,6 @@ Q_SIGNALS: void positionChanged(); void visualPositionChanged(); void indeterminateChanged(); - void indicatorChanged(); protected: void mirrorChange() override; |