13#include <QtQml/qqmlinfo.h>
14#include <QtQuick/private/qquickitem_p.h>
15#include <QtQuick/private/qquickclipnode_p.h>
16#include <QtQuick/private/qquickflickable_p.h>
18#if QT_CONFIG(accessibility)
19#include <QtQuick/private/qquickaccessibleattached_p.h>
24using namespace Qt::StringLiterals;
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
94
95
96
97
98
99
100
101
104
105
106
107
108
109
110
111
112
115
116
117
118
119
120
121
122
123
124
128#if QT_CONFIG(accessibility)
140 const QMarginsF oldInset = getInset();
141 extra.value().topInset = value;
142 extra.value().hasTopInset = !reset;
143 if (!qFuzzyCompare(oldInset.top(), value)) {
144 emit q->topInsetChanged();
145 q->insetChange(getInset(), oldInset);
152 const QMarginsF oldInset = getInset();
153 extra.value().leftInset = value;
154 extra.value().hasLeftInset = !reset;
155 if (!qFuzzyCompare(oldInset.left(), value)) {
156 emit q->leftInsetChanged();
157 q->insetChange(getInset(), oldInset);
164 const QMarginsF oldInset = getInset();
165 extra.value().rightInset = value;
166 extra.value().hasRightInset = !reset;
167 if (!qFuzzyCompare(oldInset.right(), value)) {
168 emit q->rightInsetChanged();
169 q->insetChange(getInset(), oldInset);
176 const QMarginsF oldInset = getInset();
177 extra.value().bottomInset = value;
178 extra.value().hasBottomInset = !reset;
179 if (!qFuzzyCompare(oldInset.bottom(), value)) {
180 emit q->bottomInsetChanged();
181 q->insetChange(getInset(), oldInset);
196 const auto flickable = qobject_cast<QQuickFlickable *>(background->parentItem());
198 QQuickItemPrivate *p = QQuickItemPrivate::get(background);
199 if (((!p->widthValid() || !extra.isAllocated() || !extra->hasBackgroundWidth) && qFuzzyIsNull(background->x()))
200 || (extra.isAllocated() && (extra->hasLeftInset || extra->hasRightInset))) {
201 const qreal bgWidth = flickable ? flickable->width() : width;
202 background->setX(getLeftInset());
203 background->setWidth(bgWidth - getLeftInset() - getRightInset());
206 if (((!p->heightValid() || !extra.isAllocated() || !extra->hasBackgroundHeight) && qFuzzyIsNull(background->y()))
207 || (extra.isAllocated() && (extra->hasTopInset || extra->hasBottomInset))) {
208 const qreal bgHeight = flickable ? flickable->height() : height;
209 background->setY(getTopInset());
210 background->setHeight(bgHeight - getTopInset() - getBottomInset());
217
218
219
220
221
222
223
227 inheritFont(QQuickControlPrivate::parentFont(q));
232 QFont parentFont = extra.isAllocated() ? extra->requestedFont.resolve(font) : font;
233 parentFont.setResolveMask(extra.isAllocated() ? extra->requestedFont.resolveMask() | font.resolveMask() : font.resolveMask());
235 const QFont defaultFont = QQuickTheme::font(QQuickTheme::TextArea);
236 QFont resolvedFont = parentFont.resolve(defaultFont);
238 setFont_helper(resolvedFont);
242
243
244
245
249 QFont oldFont = sourceFont;
250 q->QQuickTextEdit::setFont(font);
252 QQuickControlPrivate::updateFontRecur(q, font);
255 emit q->fontChanged();
258#if QT_CONFIG(quicktemplates2_hover)
259void QQuickTextAreaPrivate::updateHoverEnabled(
bool enabled,
bool xplicit)
262 if (!xplicit && explicitHoverEnabled)
265 bool wasEnabled = q->isHoverEnabled();
266 explicitHoverEnabled = xplicit;
267 if (wasEnabled != enabled) {
268 q->setAcceptHoverEvents(enabled);
269 QQuickControlPrivate::updateHoverEnabledRecur(q, enabled);
270 emit q->hoverEnabledChanged();
279 q->setParentItem(flickable->contentItem());
282 background->setParentItem(flickable);
284 QObjectPrivate::connect(q, &QQuickTextArea::contentSizeChanged,
this, &QQuickTextAreaPrivate::resizeFlickableContent);
285 QObjectPrivate::connect(q, &QQuickTextEdit::cursorRectangleChanged,
this, &QQuickTextAreaPrivate::ensureCursorVisible);
287 QObject::connect(flickable, &QQuickFlickable::contentXChanged, q, &QQuickItem::update);
288 QObject::connect(flickable, &QQuickFlickable::contentYChanged, q, &QQuickItem::update);
290 QQuickItemPrivate::get(flickable)->updateOrAddGeometryChangeListener(
this, QQuickGeometryChange::Size);
291 QQuickItemPrivate::get(flickable)->addItemChangeListener(
this, QQuickItemPrivate::Destroyed);
292 QObjectPrivate::connect(flickable, &QQuickFlickable::contentWidthChanged,
this, &QQuickTextAreaPrivate::resizeFlickableControl);
293 QObjectPrivate::connect(flickable, &QQuickFlickable::contentHeightChanged,
this, &QQuickTextAreaPrivate::resizeFlickableControl);
301 q->setParentItem(
nullptr);
302 if (background && background->parentItem() == flickable)
303 background->setParentItem(q);
305 QObjectPrivate::disconnect(q, &QQuickTextArea::contentSizeChanged,
this, &QQuickTextAreaPrivate::resizeFlickableContent);
306 QObjectPrivate::disconnect(q, &QQuickTextEdit::cursorRectangleChanged,
this, &QQuickTextAreaPrivate::ensureCursorVisible);
308 QObject::disconnect(flickable, &QQuickFlickable::contentXChanged, q, &QQuickItem::update);
309 QObject::disconnect(flickable, &QQuickFlickable::contentYChanged, q, &QQuickItem::update);
311 QQuickItemPrivate::get(flickable)->updateOrRemoveGeometryChangeListener(
this, QQuickGeometryChange::Nothing);
312 QQuickItemPrivate::get(flickable)->removeItemChangeListener(
this, QQuickItemPrivate::Destroyed);
313 QObjectPrivate::disconnect(flickable, &QQuickFlickable::contentWidthChanged,
this, &QQuickTextAreaPrivate::resizeFlickableControl);
314 QObjectPrivate::disconnect(flickable, &QQuickFlickable::contentHeightChanged,
this, &QQuickTextAreaPrivate::resizeFlickableControl);
332 const qreal tp = q->topPadding();
333 const qreal lp = q->leftPadding();
334 const QRectF cr = q->cursorRectangle();
336 if (cr.left() <= cx + lp) {
341 const qreal rp = q->rightPadding();
342 const QRectF nr = q->cursorPosition() < q->length() ? q->positionToRectangle(q->cursorPosition() + 1) : QRectF();
343 if (qFuzzyCompare(nr.y(), cr.y()) && nr.right() >= cx + lp + w - rp)
344 flickable->setContentX(nr.right() - w + rp);
345 else if (cr.right() >= cx + lp + w - rp)
346 flickable->setContentX(cr.right() - w + rp);
349 if (cr.top() <= cy + tp) {
352 const qreal bp = q->bottomPadding();
353 if (cr.bottom() >= cy + tp + h - bp && cr.bottom() <=
flickable->contentHeight())
354 flickable->setContentY(cr.bottom() - h + bp);
364 const qreal w = wrapMode == QQuickTextArea::NoWrap ? qMax(flickable->width(), flickable->contentWidth()) : flickable->width();
366 q->setSize(QSizeF(w, h));
377 flickable->setContentWidth(q->implicitWidth());
378 flickable->setContentHeight(q->implicitHeight());
384 if (!resizingBackground && item == background) {
385 QQuickItemPrivate *p = QQuickItemPrivate::get(item);
388 if (change.widthChange())
389 extra.value().hasBackgroundWidth = p->widthValid();
390 if (change.heightChange())
391 extra.value().hasBackgroundHeight = p->heightValid();
402 return QQuickItemPrivate::getImplicitWidth();
407 return QQuickItemPrivate::getImplicitHeight();
413 QQuickItemPrivate::implicitWidthChanged();
414 emit q->implicitWidthChanged3();
420 QQuickItemPrivate::implicitHeightChanged();
421 emit q->implicitHeightChanged3();
424#if QT_CONFIG(accessibility)
425void QQuickTextAreaPrivate::accessibilityActiveChanged(
bool active)
427 QQuickTextEditPrivate::accessibilityActiveChanged(active);
428 if (QQuickAccessibleAttached *accessibleAttached = QQuickControlPrivate::accessibleAttached(q_func()))
429 accessibleAttached->setDescriptionImplicitly(placeholder);
436 quickCancelDeferred(q, backgroundName());
442 if (background.wasExecuted())
445 if (!background || complete)
446 quickBeginDeferred(q, backgroundName(), background);
448 quickCompleteDeferred(q, backgroundName(), background);
454 if (item == background)
455 emit q->implicitBackgroundWidthChanged();
461 if (item == background)
462 emit q->implicitBackgroundHeightChanged();
468 if (item == background) {
469 background =
nullptr;
470 emit q->implicitBackgroundWidthChanged();
471 emit q->implicitBackgroundHeightChanged();
479 return QQuickTheme::palette(QQuickTheme::TextArea);
485 const auto focusReasonChanged = QQuickItemPrivate::setLastFocusChangeReason(reason);
486 if (focusReasonChanged)
487 emit q->focusReasonChanged();
489 return focusReasonChanged;
492QQuickTextArea::QQuickTextArea(QQuickItem *parent)
493 : QQuickTextEdit(*(
new QQuickTextAreaPrivate), parent)
496 setActiveFocusOnTab(
true);
497 setAcceptedMouseButtons(Qt::AllButtons);
498 d->setImplicitResizeEnabled(
false);
499 d->pressHandler.control =
this;
501#if QT_VERSION < QT_VERSION_CHECK(7
, 0
, 0
)
502 if (qEnvironmentVariable(
"QT_QUICK_CONTROLS_TEXT_SELECTION_BEHAVIOR") == u"old"_s)
503 QQuickTextEdit::setOldSelectionDefault();
507QQuickTextArea::~QQuickTextArea()
511 d->detachFlickable();
512 QQuickControlPrivate::removeImplicitSizeListener(d->background, d, QQuickControlPrivate::ImplicitSizeChanges | QQuickItemPrivate::Geometry);
515QQuickTextAreaAttached *QQuickTextArea::qmlAttachedProperties(QObject *object)
517 return new QQuickTextAreaAttached(object);
520QFont QQuickTextArea::font()
const
522 Q_D(
const QQuickTextArea);
523 QFont font = QQuickTextEdit::font();
525 font.setResolveMask(d->extra.value().requestedFont.resolveMask());
529void QQuickTextArea::setFont(
const QFont &font)
532 if (d->extra.value().requestedFont.resolveMask() == font.resolveMask() && d->extra.value().requestedFont == font)
535 d->extra.value().requestedFont = font;
540
541
542
543
544
545
546
547
548QQuickItem *QQuickTextArea::background()
const
550 QQuickTextAreaPrivate *d =
const_cast<QQuickTextAreaPrivate *>(d_func());
552 d->executeBackground();
553 return d->background;
556void QQuickTextArea::setBackground(QQuickItem *background)
559 if (d->background == background)
562 QQuickControlPrivate::warnIfCustomizationNotSupported(
this, background, QStringLiteral(
"background"));
564 if (!d->background.isExecuting())
565 d->cancelBackground();
567 const qreal oldImplicitBackgroundWidth = implicitBackgroundWidth();
568 const qreal oldImplicitBackgroundHeight = implicitBackgroundHeight();
570 if (d->extra.isAllocated()) {
571 d->extra.value().hasBackgroundWidth =
false;
572 d->extra.value().hasBackgroundHeight =
false;
575 QQuickControlPrivate::removeImplicitSizeListener(d->background, d, QQuickControlPrivate::ImplicitSizeChanges | QQuickItemPrivate::Geometry);
576 QQuickControlPrivate::hideOldItem(d->background);
577 d->background = background;
580 QQuickItemPrivate *p = QQuickItemPrivate::get(background);
581 if (p->widthValid() || p->heightValid()) {
582 d->extra.value().hasBackgroundWidth = p->widthValid();
583 d->extra.value().hasBackgroundHeight = p->heightValid();
586 background->setParentItem(d->flickable);
588 background->setParentItem(
this);
589 if (qFuzzyIsNull(background->z()))
590 background->setZ(-1);
591 if (isComponentComplete())
592 d->resizeBackground();
593 QQuickControlPrivate::addImplicitSizeListener(background, d, QQuickControlPrivate::ImplicitSizeChanges | QQuickItemPrivate::Geometry);
596 if (!qFuzzyCompare(oldImplicitBackgroundWidth, implicitBackgroundWidth()))
597 emit implicitBackgroundWidthChanged();
598 if (!qFuzzyCompare(oldImplicitBackgroundHeight, implicitBackgroundHeight()))
599 emit implicitBackgroundHeightChanged();
600 if (!d->background.isExecuting())
601 emit backgroundChanged();
605
606
607
608
609
610QString QQuickTextArea::placeholderText()
const
612 Q_D(
const QQuickTextArea);
613 return d->placeholder;
616void QQuickTextArea::setPlaceholderText(
const QString &text)
619 if (d->placeholder == text)
622 d->placeholder = text;
623#if QT_CONFIG(accessibility)
624 if (QQuickAccessibleAttached *accessibleAttached = QQuickControlPrivate::accessibleAttached(
this))
625 accessibleAttached->setDescriptionImplicitly(text);
627 emit placeholderTextChanged();
631
632
633
634
635
636
637
638QColor QQuickTextArea::placeholderTextColor()
const
640 Q_D(
const QQuickTextArea);
641 return d->placeholderColor;
644void QQuickTextArea::setPlaceholderTextColor(
const QColor &color)
647 if (d->placeholderColor == color)
650 d->placeholderColor = color;
651 emit placeholderTextColorChanged();
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673Qt::FocusReason QQuickTextArea::focusReason()
const
675 Q_D(
const QQuickTextArea);
676 return d->lastFocusChangeReason();
679void QQuickTextArea::setFocusReason(Qt::FocusReason reason)
682 d->setLastFocusChangeReason(reason);
686bool QQuickTextArea::contains(
const QPointF &point)
const
688 Q_D(
const QQuickTextArea);
689 if (d->flickable && !d->flickable->contains(d->flickable->mapFromItem(
this, point)))
691 return QQuickTextEdit::contains(point);
695
696
697
698
699
700
701
702
703bool QQuickTextArea::isHovered()
const
705#if QT_CONFIG(quicktemplates2_hover)
706 Q_D(
const QQuickTextArea);
713void QQuickTextArea::setHovered(
bool hovered)
715#if QT_CONFIG(quicktemplates2_hover)
717 if (hovered == d->hovered)
720 d->hovered = hovered;
721 emit hoveredChanged();
722 QQuickToolTipAttachedPrivate::maybeSetVisibleImplicitly(
this, hovered);
729
730
731
732
733
734
735
736bool QQuickTextArea::isHoverEnabled()
const
738#if QT_CONFIG(quicktemplates2_hover)
739 Q_D(
const QQuickTextArea);
740 return d->hoverEnabled;
746void QQuickTextArea::setHoverEnabled(
bool enabled)
748#if QT_CONFIG(quicktemplates2_hover)
750 if (d->explicitHoverEnabled && enabled == d->hoverEnabled)
753 d->updateHoverEnabled(enabled,
true);
759void QQuickTextArea::resetHoverEnabled()
761#if QT_CONFIG(quicktemplates2_hover)
763 if (!d->explicitHoverEnabled)
766 d->explicitHoverEnabled =
false;
767 d->updateHoverEnabled(QQuickControlPrivate::calcHoverEnabled(d->parentItem),
false);
772
773
774
775
776
777
778
779
780
781
782qreal QQuickTextArea::implicitBackgroundWidth()
const
784 Q_D(
const QQuickTextArea);
787 return d->background->implicitWidth();
791
792
793
794
795
796
797
798
799
800
801qreal QQuickTextArea::implicitBackgroundHeight()
const
803 Q_D(
const QQuickTextArea);
806 return d->background->implicitHeight();
810
811
812
813
814
815
816
817qreal QQuickTextArea::topInset()
const
819 Q_D(
const QQuickTextArea);
820 return d->getTopInset();
823void QQuickTextArea::setTopInset(qreal inset)
826 d->setTopInset(inset);
829void QQuickTextArea::resetTopInset()
832 d->setTopInset(0,
true);
836
837
838
839
840
841
842
843qreal QQuickTextArea::leftInset()
const
845 Q_D(
const QQuickTextArea);
846 return d->getLeftInset();
849void QQuickTextArea::setLeftInset(qreal inset)
852 d->setLeftInset(inset);
855void QQuickTextArea::resetLeftInset()
858 d->setLeftInset(0,
true);
862
863
864
865
866
867
868
869qreal QQuickTextArea::rightInset()
const
871 Q_D(
const QQuickTextArea);
872 return d->getRightInset();
875void QQuickTextArea::setRightInset(qreal inset)
878 d->setRightInset(inset);
881void QQuickTextArea::resetRightInset()
884 d->setRightInset(0,
true);
888
889
890
891
892
893
894
895qreal QQuickTextArea::bottomInset()
const
897 Q_D(
const QQuickTextArea);
898 return d->getBottomInset();
901void QQuickTextArea::setBottomInset(qreal inset)
904 d->setBottomInset(inset);
907void QQuickTextArea::resetBottomInset()
910 d->setBottomInset(0,
true);
913void QQuickTextArea::classBegin()
916 QQuickTextEdit::classBegin();
920void QQuickTextArea::componentComplete()
923 d->executeBackground(
true);
924 QQuickTextEdit::componentComplete();
925 d->resizeBackground();
926#if QT_CONFIG(quicktemplates2_hover)
927 if (!d->explicitHoverEnabled)
928 setAcceptHoverEvents(QQuickControlPrivate::calcHoverEnabled(d->parentItem));
932void QQuickTextArea::itemChange(QQuickItem::ItemChange change,
const QQuickItem::ItemChangeData &value)
935 QQuickTextEdit::itemChange(change, value);
937 case ItemEnabledHasChanged:
939 case ItemSceneChange:
940 case ItemParentHasChanged:
941 if ((change == ItemParentHasChanged && value.item) || (change == ItemSceneChange && value.window)) {
943#if QT_CONFIG(quicktemplates2_hover)
944 if (!d->explicitHoverEnabled)
945 d->updateHoverEnabled(QQuickControlPrivate::calcHoverEnabled(d->parentItem),
false);
947 if (change == ItemParentHasChanged) {
948 QQuickFlickable *flickable = qobject_cast<QQuickFlickable *>(value.item->parentItem());
950 QQuickScrollView *scrollView = qobject_cast<QQuickScrollView *>(flickable->parentItem());
952 d->attachFlickable(flickable);
962void QQuickTextArea::geometryChange(
const QRectF &newGeometry,
const QRectF &oldGeometry)
965 QQuickTextEdit::geometryChange(newGeometry, oldGeometry);
966 d->resizeBackground();
969void QQuickTextArea::insetChange(
const QMarginsF &newInset,
const QMarginsF &oldInset)
974 d->resizeBackground();
977QSGNode *QQuickTextArea::updatePaintNode(QSGNode *oldNode, UpdatePaintNodeData *data)
980 QQuickDefaultClipNode *clipNode =
static_cast<QQuickDefaultClipNode *>(oldNode);
982 clipNode =
new QQuickDefaultClipNode(QRectF());
984 QQuickItem *clipper =
this;
986 clipper = d->flickable;
988 const QRectF cr = clipper->clipRect().adjusted(
989 leftPadding(), topPadding(),
990 (!d->cursorItem && effectiveHAlign() == HAlignment::AlignRight ? 1 : 0) - rightPadding(),
993 clipNode->setRect(!d->flickable ? cr : cr.translated(d->flickable->contentX(), d->flickable->contentY()));
996 QSGNode *textNode = QQuickTextEdit::updatePaintNode(clipNode->firstChild(), data);
997 if (!textNode->parent())
998 clipNode->appendChildNode(textNode);
1000 if (d->cursorItem) {
1001 QQuickDefaultClipNode *cursorNode = QQuickItemPrivate::get(d->cursorItem)->clipNode();
1003 cursorNode->setClipRect(d->cursorItem->mapRectFromItem(clipper, cr));
1009void QQuickTextArea::focusInEvent(QFocusEvent *event)
1011 QQuickTextEdit::focusInEvent(event);
1014void QQuickTextArea::focusOutEvent(QFocusEvent *event)
1016 QQuickTextEdit::focusOutEvent(event);
1019#if QT_CONFIG(quicktemplates2_hover)
1020void QQuickTextArea::hoverEnterEvent(QHoverEvent *event)
1022 Q_D(QQuickTextArea);
1023 QQuickTextEdit::hoverEnterEvent(event);
1024 setHovered(d->hoverEnabled);
1028void QQuickTextArea::hoverLeaveEvent(QHoverEvent *event)
1030 QQuickTextEdit::hoverLeaveEvent(event);
1036void QQuickTextArea::mousePressEvent(QMouseEvent *event)
1038 Q_D(QQuickTextArea);
1039 d->pressHandler.mousePressEvent(event);
1040 if (d->pressHandler.isActive()) {
1041 if (d->pressHandler.delayedMousePressEvent) {
1042 QQuickTextEdit::mousePressEvent(d->pressHandler.delayedMousePressEvent.get());
1043 d->pressHandler.clearDelayedMouseEvent();
1047 const bool wasAccepted = event->isAccepted();
1048 QQuickTextEdit::mousePressEvent(event);
1054void QQuickTextArea::mouseMoveEvent(QMouseEvent *event)
1056 Q_D(QQuickTextArea);
1057 d->pressHandler.mouseMoveEvent(event);
1058 if (d->pressHandler.isActive()) {
1059 if (d->pressHandler.delayedMousePressEvent) {
1060 QQuickTextEdit::mousePressEvent(d->pressHandler.delayedMousePressEvent.get());
1061 d->pressHandler.clearDelayedMouseEvent();
1063 QQuickTextEdit::mouseMoveEvent(event);
1067void QQuickTextArea::mouseReleaseEvent(QMouseEvent *event)
1069 Q_D(QQuickTextArea);
1070 d->pressHandler.mouseReleaseEvent(event);
1071 if (d->pressHandler.isActive()) {
1072 if (d->pressHandler.delayedMousePressEvent) {
1073 QQuickTextEdit::mousePressEvent(d->pressHandler.delayedMousePressEvent.get());
1074 d->pressHandler.clearDelayedMouseEvent();
1076 QQuickTextEdit::mouseReleaseEvent(event);
1080void QQuickTextArea::mouseDoubleClickEvent(QMouseEvent *event)
1082 Q_D(QQuickTextArea);
1083 if (d->pressHandler.delayedMousePressEvent) {
1084 QQuickTextEdit::mousePressEvent(d->pressHandler.delayedMousePressEvent.get());
1085 d->pressHandler.clearDelayedMouseEvent();
1087 QQuickTextEdit::mouseDoubleClickEvent(event);
1090void QQuickTextArea::timerEvent(QTimerEvent *event)
1092 Q_D(QQuickTextArea);
1093 if (event->timerId() == d->pressHandler.timer.timerId())
1094 d->pressHandler.timerEvent(event);
1096 QQuickTextEdit::timerEvent(event);
1105QQuickTextAreaAttached::QQuickTextAreaAttached(QObject *parent)
1106 : QObject(*(
new QQuickTextAreaAttachedPrivate), parent)
1111
1112
1113
1114
1115
1116
1117QQuickTextArea *QQuickTextAreaAttached::flickable()
const
1119 Q_D(
const QQuickTextAreaAttached);
1123void QQuickTextAreaAttached::setFlickable(QQuickTextArea *control)
1125 Q_D(QQuickTextAreaAttached);
1126 QQuickFlickable *flickable = qobject_cast<QQuickFlickable *>(parent());
1128 qmlWarning(parent()) <<
"TextArea attached property must be attached to an object deriving from Flickable";
1132 if (d->control == control)
1136 QQuickTextAreaPrivate::get(d->control)->detachFlickable();
1138 d->control = control;
1141 QQuickTextAreaPrivate::get(control)->attachFlickable(flickable);
1143 emit flickableChanged();
1148#include "moc_qquicktextarea_p.cpp"
void implicitWidthChanged() override
qreal getImplicitWidth() const override
bool setLastFocusChangeReason(Qt::FocusReason reason) override
QQuickFlickable * flickable
void setTopInset(qreal value, bool reset=false)
void setLeftInset(qreal value, bool reset=false)
void setRightInset(qreal value, bool reset=false)
void executeBackground(bool complete=false)
void updateFont(const QFont &font)
void setBottomInset(qreal value, bool reset=false)
void itemDestroyed(QQuickItem *item) override
void itemGeometryChanged(QQuickItem *item, QQuickGeometryChange change, const QRectF &diff) override
void itemImplicitWidthChanged(QQuickItem *item) override
void attachFlickable(QQuickFlickable *flickable)
void resizeFlickableControl()
void inheritFont(const QFont &font)
qreal getImplicitHeight() const override
void ensureCursorVisible()
void itemImplicitHeightChanged(QQuickItem *item) override
void resizeFlickableContent()
QPalette defaultPalette() const override
void implicitHeightChanged() override
Combined button and popup list for selecting options.