aboutsummaryrefslogtreecommitdiffstats
path: root/src/quick
diff options
context:
space:
mode:
Diffstat (limited to 'src/quick')
-rw-r--r--src/quick/doc/src/concepts/visualcanvas/scenegraph.qdoc5
-rw-r--r--src/quick/items/qquickflickable.cpp6
-rw-r--r--src/quick/items/qquickitemview.cpp2
-rw-r--r--src/quick/items/qquickitemview_p.h15
-rw-r--r--src/quick/items/qquicklistview.cpp16
-rw-r--r--src/quick/items/qquickmousearea.cpp6
-rw-r--r--src/quick/items/qquickshadereffect.cpp1
-rw-r--r--src/quick/items/qquickshadereffectnode.cpp7
-rw-r--r--src/quick/items/qquicktextinput.cpp8
-rw-r--r--src/quick/items/qquickwindow.cpp17
-rw-r--r--src/quick/scenegraph/qsgcontext.cpp2
-rw-r--r--src/quick/scenegraph/qsgrenderloop.cpp8
-rw-r--r--src/quick/scenegraph/qsgthreadedrenderloop.cpp2
-rw-r--r--src/quick/scenegraph/shaders/distancefieldshiftedtext.frag2
-rw-r--r--src/quick/util/qquicksmoothedanimation.cpp3
-rw-r--r--src/quick/util/qquickvaluetypes_p.h82
16 files changed, 116 insertions, 66 deletions
diff --git a/src/quick/doc/src/concepts/visualcanvas/scenegraph.qdoc b/src/quick/doc/src/concepts/visualcanvas/scenegraph.qdoc
index 384e8209c1..16075f0db3 100644
--- a/src/quick/doc/src/concepts/visualcanvas/scenegraph.qdoc
+++ b/src/quick/doc/src/concepts/visualcanvas/scenegraph.qdoc
@@ -724,6 +724,11 @@ with multiple windows.
\li Some material flags prevent batching, the most limiting one
being QSGMaterial::RequiresFullMatrix which prevents all batching.
+ \li Applications with a monochrome background should set it using
+ QQuickWindow::setColor() rather than using a top-level Rectangle item.
+ QQuickWindow::setColor() will be used in a call to \c glClear(),
+ which is potentially faster.
+
\endlist
If an application performs poorly, make sure that rendering is
diff --git a/src/quick/items/qquickflickable.cpp b/src/quick/items/qquickflickable.cpp
index f0a68b184a..ae174d86e0 100644
--- a/src/quick/items/qquickflickable.cpp
+++ b/src/quick/items/qquickflickable.cpp
@@ -1116,10 +1116,10 @@ void QQuickFlickablePrivate::handleMouseMoveEvent(QMouseEvent *event)
hData.velocity = 0;
}
- if ((hMoved && !prevHMoved) || (vMoved && !prevVMoved)) {
- draggingStarting();
+ draggingStarting();
+
+ if ((hMoved && !prevHMoved) || (vMoved && !prevVMoved))
q->movementStarting();
- }
qint64 currentTimestamp = computeCurrentTime(event);
qreal elapsed = qreal(currentTimestamp - (lastPos.isNull() ? lastPressTime : lastPosTime)) / 1000.;
diff --git a/src/quick/items/qquickitemview.cpp b/src/quick/items/qquickitemview.cpp
index 513f8f3857..d9ff024d9f 100644
--- a/src/quick/items/qquickitemview.cpp
+++ b/src/quick/items/qquickitemview.cpp
@@ -1118,11 +1118,13 @@ void QQuickItemViewPrivate::itemGeometryChanged(QQuickItem *item, const QRectF &
if (header && header->item == item) {
updateHeader();
markExtentsDirty();
+ updateViewport();
if (!q->isMoving() && !q->isFlicking())
fixupPosition();
} else if (footer && footer->item == item) {
updateFooter();
markExtentsDirty();
+ updateViewport();
if (!q->isMoving() && !q->isFlicking())
fixupPosition();
}
diff --git a/src/quick/items/qquickitemview_p.h b/src/quick/items/qquickitemview_p.h
index 318f5361b5..17d150f480 100644
--- a/src/quick/items/qquickitemview_p.h
+++ b/src/quick/items/qquickitemview_p.h
@@ -324,6 +324,21 @@ public:
}
}
+ void setSections(const QString &prev, const QString &sect, const QString &next) {
+ bool prevChanged = prev != m_prevSection;
+ bool sectChanged = sect != m_section;
+ bool nextChanged = next != m_nextSection;
+ m_prevSection = prev;
+ m_section = sect;
+ m_nextSection = next;
+ if (prevChanged)
+ Q_EMIT prevSectionChanged();
+ if (sectChanged)
+ Q_EMIT sectionChanged();
+ if (nextChanged)
+ Q_EMIT nextSectionChanged();
+ }
+
void emitAdd() { Q_EMIT add(); }
void emitRemove() { Q_EMIT remove(); }
diff --git a/src/quick/items/qquicklistview.cpp b/src/quick/items/qquicklistview.cpp
index c55f9ef696..d6754ddfd1 100644
--- a/src/quick/items/qquicklistview.cpp
+++ b/src/quick/items/qquicklistview.cpp
@@ -487,7 +487,7 @@ QString QQuickListViewPrivate::sectionAt(int modelIndex)
return item->attached->section();
QString section;
- if (sectionCriteria) {
+ if (sectionCriteria && modelIndex >= 0 && modelIndex < itemCount) {
QString propValue = model->stringValue(modelIndex, sectionCriteria->property());
section = sectionCriteria->sectionString(propValue);
}
@@ -565,19 +565,19 @@ FxViewItem *QQuickListViewPrivate::newViewItem(int modelIndex, QQuickItem *item)
// initialise attached properties
if (sectionCriteria) {
QString propValue = model->stringValue(modelIndex, sectionCriteria->property());
- listItem->attached->setSection(sectionCriteria->sectionString(propValue));
+ QString section = sectionCriteria->sectionString(propValue);
+ QString prevSection;
+ QString nextSection;
if (modelIndex > 0) {
if (FxViewItem *item = itemBefore(modelIndex))
- listItem->attached->setPrevSection(item->attached->section());
+ prevSection = item->attached->section();
else
- listItem->attached->setPrevSection(sectionAt(modelIndex-1));
+ prevSection = sectionAt(modelIndex-1);
}
if (modelIndex < model->count()-1) {
- if (FxViewItem *item = visibleItem(modelIndex+1))
- listItem->attached->setNextSection(static_cast<QQuickListViewAttached*>(item->attached)->section());
- else
- listItem->attached->setNextSection(sectionAt(modelIndex+1));
+ nextSection = sectionAt(modelIndex+1);
}
+ listItem->attached->setSections(prevSection, section, nextSection);
}
return listItem;
diff --git a/src/quick/items/qquickmousearea.cpp b/src/quick/items/qquickmousearea.cpp
index ca64ebb6e3..2467d7252a 100644
--- a/src/quick/items/qquickmousearea.cpp
+++ b/src/quick/items/qquickmousearea.cpp
@@ -823,6 +823,12 @@ void QQuickMouseArea::ungrabMouse()
d->pressed = 0;
d->stealMouse = false;
setKeepMouseGrab(false);
+
+#ifndef QT_NO_DRAGANDDROP
+ if (d->drag)
+ d->drag->setActive(false);
+#endif
+
emit canceled();
emit pressedChanged();
emit pressedButtonsChanged();
diff --git a/src/quick/items/qquickshadereffect.cpp b/src/quick/items/qquickshadereffect.cpp
index 9c766a1622..9a20703f18 100644
--- a/src/quick/items/qquickshadereffect.cpp
+++ b/src/quick/items/qquickshadereffect.cpp
@@ -559,6 +559,7 @@ void QQuickShaderEffectCommon::propertyChanged(QQuickItem *item, int mappedId,
\li QVector4D -> vec4
\li QTransform -> mat3
\li QMatrix4x4 -> mat4
+ \li QQuaternion -> vec4, scalar value is \c w.
\li \l Image, \l ShaderEffectSource -> sampler2D - Origin is in the top-left
corner, and the color values are premultiplied.
\endlist
diff --git a/src/quick/items/qquickshadereffectnode.cpp b/src/quick/items/qquickshadereffectnode.cpp
index 8788fa8362..a615cb6f91 100644
--- a/src/quick/items/qquickshadereffectnode.cpp
+++ b/src/quick/items/qquickshadereffectnode.cpp
@@ -146,7 +146,6 @@ void QQuickCustomMaterialShader::updateState(const RenderState &state, QSGMateri
continue;
}
}
- qWarning("ShaderEffect: source or provider missing when binding textures");
glBindTexture(GL_TEXTURE_2D, 0);
} else if (d.specialType == UniformData::Opacity) {
program()->setUniformValue(loc, state.opacity());
@@ -197,6 +196,12 @@ void QQuickCustomMaterialShader::updateState(const RenderState &state, QSGMateri
case QMetaType::QVector4D:
program()->setUniformValue(loc, qvariant_cast<QVector4D>(d.value));
break;
+ case QMetaType::QQuaternion:
+ {
+ QQuaternion q = qvariant_cast<QQuaternion>(d.value);
+ program()->setUniformValue(loc, q.x(), q.y(), q.z(), q.scalar());
+ }
+ break;
case QMetaType::QMatrix4x4:
program()->setUniformValue(loc, qvariant_cast<QMatrix4x4>(d.value));
break;
diff --git a/src/quick/items/qquicktextinput.cpp b/src/quick/items/qquicktextinput.cpp
index b46387ba47..1dd1dfa57e 100644
--- a/src/quick/items/qquicktextinput.cpp
+++ b/src/quick/items/qquicktextinput.cpp
@@ -1679,6 +1679,7 @@ bool QQuickTextInput::event(QEvent* ev)
|| ke == QKeySequence::SelectAll
|| ke == QKeySequence::SelectEndOfDocument) {
ke->accept();
+ return true;
} else if (ke->modifiers() == Qt::NoModifier || ke->modifiers() == Qt::ShiftModifier
|| ke->modifiers() == Qt::KeypadModifier) {
if (ke->key() < Qt::Key_Escape) {
@@ -1692,6 +1693,7 @@ bool QQuickTextInput::event(QEvent* ev)
case Qt::Key_Backspace:
case Qt::Key_Left:
case Qt::Key_Right:
+ ke->accept();
return true;
default:
break;
@@ -2533,7 +2535,7 @@ void QQuickTextInputPrivate::handleFocusEvent(QFocusEvent *event)
&& !persistentSelection)
deselect();
- if (hasAcceptableInput(m_text) || fixup())
+ if (q->hasAcceptableInput() || fixup())
emit q->editingFinished();
#ifndef QT_NO_IM
@@ -3392,7 +3394,6 @@ bool QQuickTextInputPrivate::finishChange(int validateFromState, bool update, bo
*/
void QQuickTextInputPrivate::internalSetText(const QString &txt, int pos, bool edited)
{
- Q_Q(QQuickTextInput);
internalDeselect();
QString oldText = m_text;
if (m_maskData) {
@@ -3410,6 +3411,7 @@ void QQuickTextInputPrivate::internalSetText(const QString &txt, int pos, bool e
#ifdef QT_NO_ACCESSIBILITY
Q_UNUSED(changed)
#else
+ Q_Q(QQuickTextInput);
if (changed && QAccessible::isActive()) {
if (QObject *acc = QQuickAccessibleAttached::findAccessible(q, QAccessible::EditableText)) {
QAccessibleTextUpdateEvent ev(acc, 0, oldText, m_text);
@@ -4117,7 +4119,7 @@ void QQuickTextInputPrivate::processKeyEvent(QKeyEvent* event)
Q_Q(QQuickTextInput);
if (event->key() == Qt::Key_Enter || event->key() == Qt::Key_Return) {
- if (hasAcceptableInput(m_text) || fixup()) {
+ if (q->hasAcceptableInput() || fixup()) {
emit q->accepted();
emit q->editingFinished();
}
diff --git a/src/quick/items/qquickwindow.cpp b/src/quick/items/qquickwindow.cpp
index 848eeca2a6..3a8e177bbb 100644
--- a/src/quick/items/qquickwindow.cpp
+++ b/src/quick/items/qquickwindow.cpp
@@ -665,14 +665,18 @@ void QQuickWindowPrivate::setFocusInScope(QQuickItem *scope, QQuickItem *item, Q
QVarLengthArray<QQuickItem *, 20> changed;
// Does this change the active focus?
- if (item == contentItem || (scopePrivate->activeFocus && item->isEnabled())) {
+ if (item == contentItem || scopePrivate->activeFocus) {
QQuickItem *oldActiveFocusItem = 0;
oldActiveFocusItem = activeFocusItem;
- newActiveFocusItem = item;
- while (newActiveFocusItem->isFocusScope()
- && newActiveFocusItem->scopedFocusItem()
- && newActiveFocusItem->scopedFocusItem()->isEnabled()) {
- newActiveFocusItem = newActiveFocusItem->scopedFocusItem();
+ if (item->isEnabled()) {
+ newActiveFocusItem = item;
+ while (newActiveFocusItem->isFocusScope()
+ && newActiveFocusItem->scopedFocusItem()
+ && newActiveFocusItem->scopedFocusItem()->isEnabled()) {
+ newActiveFocusItem = newActiveFocusItem->scopedFocusItem();
+ }
+ } else {
+ newActiveFocusItem = scope;
}
if (oldActiveFocusItem) {
@@ -2795,6 +2799,7 @@ QImage QQuickWindow::grabWindow()
QOpenGLContext context;
context.setFormat(requestedFormat());
+ context.setShareContext(QSGContext::sharedOpenGLContext());
context.create();
context.makeCurrent(this);
d->context->initialize(&context);
diff --git a/src/quick/scenegraph/qsgcontext.cpp b/src/quick/scenegraph/qsgcontext.cpp
index afde7939f2..90803db9fe 100644
--- a/src/quick/scenegraph/qsgcontext.cpp
+++ b/src/quick/scenegraph/qsgcontext.cpp
@@ -454,6 +454,8 @@ void QSGRenderContext::initialize(QOpenGLContext *context)
const char *renderer = (const char *) glGetString(GL_RENDERER);
if (strstr(renderer, "llvmpipe"))
m_serializedRender = true;
+ if (strstr(vendor, "Hisilicon Technologies") && strstr(renderer, "Immersion.16"))
+ m_brokenIBOs = true;
#endif
emit initialized();
diff --git a/src/quick/scenegraph/qsgrenderloop.cpp b/src/quick/scenegraph/qsgrenderloop.cpp
index aa0d7b5a6c..52df55fa92 100644
--- a/src/quick/scenegraph/qsgrenderloop.cpp
+++ b/src/quick/scenegraph/qsgrenderloop.cpp
@@ -122,6 +122,7 @@ public:
QSGRenderContext *rc;
QImage grabContent;
+ int m_update_timer;
bool eventPending;
};
@@ -384,7 +385,8 @@ void QSGGuiThreadRenderLoop::maybeUpdate(QQuickWindow *window)
m_windows[window].updatePending = true;
if (!eventPending) {
- QCoreApplication::postEvent(this, new QEvent(QEvent::User));
+ const int exhaust_delay = 5;
+ m_update_timer = startTimer(exhaust_delay, Qt::PreciseTimer);
eventPending = true;
}
}
@@ -399,8 +401,10 @@ QSGContext *QSGGuiThreadRenderLoop::sceneGraphContext() const
bool QSGGuiThreadRenderLoop::event(QEvent *e)
{
- if (e->type() == QEvent::User) {
+ if (e->type() == QEvent::Timer) {
eventPending = false;
+ killTimer(m_update_timer);
+ m_update_timer = 0;
for (QHash<QQuickWindow *, WindowData>::const_iterator it = m_windows.constBegin();
it != m_windows.constEnd(); ++it) {
const WindowData &data = it.value();
diff --git a/src/quick/scenegraph/qsgthreadedrenderloop.cpp b/src/quick/scenegraph/qsgthreadedrenderloop.cpp
index acd07cf6cd..2759d82e77 100644
--- a/src/quick/scenegraph/qsgthreadedrenderloop.cpp
+++ b/src/quick/scenegraph/qsgthreadedrenderloop.cpp
@@ -690,7 +690,7 @@ QSGThreadedRenderLoop::QSGThreadedRenderLoop()
: sg(QSGContext::createDefaultContext())
, m_animation_timer(0)
{
-#if defined(QSG_RENDER_LOOP_DEBUG_BASIC) || defined (QSG_RENDER_LOOP_DEBUG_FULL)
+#if defined(QSG_RENDER_LOOP_DEBUG)
qsgrl_timer.start();
#endif
diff --git a/src/quick/scenegraph/shaders/distancefieldshiftedtext.frag b/src/quick/scenegraph/shaders/distancefieldshiftedtext.frag
index 60c1c7468b..42fead8713 100644
--- a/src/quick/scenegraph/shaders/distancefieldshiftedtext.frag
+++ b/src/quick/scenegraph/shaders/distancefieldshiftedtext.frag
@@ -1,7 +1,7 @@
varying highp vec2 sampleCoord;
varying highp vec2 shiftedSampleCoord;
-uniform sampler2D _qt_texture;
+uniform mediump sampler2D _qt_texture;
uniform lowp vec4 color;
uniform lowp vec4 styleColor;
uniform mediump float alphaMin;
diff --git a/src/quick/util/qquicksmoothedanimation.cpp b/src/quick/util/qquicksmoothedanimation.cpp
index 017fe39003..9e9e6cb419 100644
--- a/src/quick/util/qquicksmoothedanimation.cpp
+++ b/src/quick/util/qquicksmoothedanimation.cpp
@@ -242,6 +242,9 @@ qreal QSmoothedAnimation::easeFollow(qreal time_seconds)
void QSmoothedAnimation::updateCurrentTime(int t)
{
+ if (!isRunning() && !isPaused()) // This can happen if init() stops the animation in some cases
+ return;
+
qreal time_seconds = useDelta ? qreal(QQmlAnimationTimer::instance()->currentDelta()) / 1000. : qreal(t - lastTime) / 1000.;
if (useDelta)
useDelta = false;
diff --git a/src/quick/util/qquickvaluetypes_p.h b/src/quick/util/qquickvaluetypes_p.h
index 88570f3b6e..94db7a8729 100644
--- a/src/quick/util/qquickvaluetypes_p.h
+++ b/src/quick/util/qquickvaluetypes_p.h
@@ -64,10 +64,10 @@ void registerValueTypes();
class Q_AUTOTEST_EXPORT QQuickColorValueType : public QQmlValueTypeBase<QColor>
{
- Q_PROPERTY(qreal r READ r WRITE setR)
- Q_PROPERTY(qreal g READ g WRITE setG)
- Q_PROPERTY(qreal b READ b WRITE setB)
- Q_PROPERTY(qreal a READ a WRITE setA)
+ Q_PROPERTY(qreal r READ r WRITE setR FINAL)
+ Q_PROPERTY(qreal g READ g WRITE setG FINAL)
+ Q_PROPERTY(qreal b READ b WRITE setB FINAL)
+ Q_PROPERTY(qreal a READ a WRITE setA FINAL)
Q_OBJECT
public:
QQuickColorValueType(QObject *parent = 0);
@@ -86,8 +86,8 @@ public:
class Q_AUTOTEST_EXPORT QQuickVector2DValueType : public QQmlValueTypeBase<QVector2D>
{
- Q_PROPERTY(qreal x READ x WRITE setX)
- Q_PROPERTY(qreal y READ y WRITE setY)
+ Q_PROPERTY(qreal x READ x WRITE setX FINAL)
+ Q_PROPERTY(qreal y READ y WRITE setY FINAL)
Q_OBJECT
public:
QQuickVector2DValueType(QObject *parent = 0);
@@ -115,9 +115,9 @@ public:
class Q_AUTOTEST_EXPORT QQuickVector3DValueType : public QQmlValueTypeBase<QVector3D>
{
- Q_PROPERTY(qreal x READ x WRITE setX)
- Q_PROPERTY(qreal y READ y WRITE setY)
- Q_PROPERTY(qreal z READ z WRITE setZ)
+ Q_PROPERTY(qreal x READ x WRITE setX FINAL)
+ Q_PROPERTY(qreal y READ y WRITE setY FINAL)
+ Q_PROPERTY(qreal z READ z WRITE setZ FINAL)
Q_OBJECT
public:
QQuickVector3DValueType(QObject *parent = 0);
@@ -149,10 +149,10 @@ public:
class Q_AUTOTEST_EXPORT QQuickVector4DValueType : public QQmlValueTypeBase<QVector4D>
{
- Q_PROPERTY(qreal x READ x WRITE setX)
- Q_PROPERTY(qreal y READ y WRITE setY)
- Q_PROPERTY(qreal z READ z WRITE setZ)
- Q_PROPERTY(qreal w READ w WRITE setW)
+ Q_PROPERTY(qreal x READ x WRITE setX FINAL)
+ Q_PROPERTY(qreal y READ y WRITE setY FINAL)
+ Q_PROPERTY(qreal z READ z WRITE setZ FINAL)
+ Q_PROPERTY(qreal w READ w WRITE setW FINAL)
Q_OBJECT
public:
QQuickVector4DValueType(QObject *parent = 0);
@@ -207,22 +207,22 @@ public:
class Q_AUTOTEST_EXPORT QQuickMatrix4x4ValueType : public QQmlValueTypeBase<QMatrix4x4>
{
- Q_PROPERTY(qreal m11 READ m11 WRITE setM11)
- Q_PROPERTY(qreal m12 READ m12 WRITE setM12)
- Q_PROPERTY(qreal m13 READ m13 WRITE setM13)
- Q_PROPERTY(qreal m14 READ m14 WRITE setM14)
- Q_PROPERTY(qreal m21 READ m21 WRITE setM21)
- Q_PROPERTY(qreal m22 READ m22 WRITE setM22)
- Q_PROPERTY(qreal m23 READ m23 WRITE setM23)
- Q_PROPERTY(qreal m24 READ m24 WRITE setM24)
- Q_PROPERTY(qreal m31 READ m31 WRITE setM31)
- Q_PROPERTY(qreal m32 READ m32 WRITE setM32)
- Q_PROPERTY(qreal m33 READ m33 WRITE setM33)
- Q_PROPERTY(qreal m34 READ m34 WRITE setM34)
- Q_PROPERTY(qreal m41 READ m41 WRITE setM41)
- Q_PROPERTY(qreal m42 READ m42 WRITE setM42)
- Q_PROPERTY(qreal m43 READ m43 WRITE setM43)
- Q_PROPERTY(qreal m44 READ m44 WRITE setM44)
+ Q_PROPERTY(qreal m11 READ m11 WRITE setM11 FINAL)
+ Q_PROPERTY(qreal m12 READ m12 WRITE setM12 FINAL)
+ Q_PROPERTY(qreal m13 READ m13 WRITE setM13 FINAL)
+ Q_PROPERTY(qreal m14 READ m14 WRITE setM14 FINAL)
+ Q_PROPERTY(qreal m21 READ m21 WRITE setM21 FINAL)
+ Q_PROPERTY(qreal m22 READ m22 WRITE setM22 FINAL)
+ Q_PROPERTY(qreal m23 READ m23 WRITE setM23 FINAL)
+ Q_PROPERTY(qreal m24 READ m24 WRITE setM24 FINAL)
+ Q_PROPERTY(qreal m31 READ m31 WRITE setM31 FINAL)
+ Q_PROPERTY(qreal m32 READ m32 WRITE setM32 FINAL)
+ Q_PROPERTY(qreal m33 READ m33 WRITE setM33 FINAL)
+ Q_PROPERTY(qreal m34 READ m34 WRITE setM34 FINAL)
+ Q_PROPERTY(qreal m41 READ m41 WRITE setM41 FINAL)
+ Q_PROPERTY(qreal m42 READ m42 WRITE setM42 FINAL)
+ Q_PROPERTY(qreal m43 READ m43 WRITE setM43 FINAL)
+ Q_PROPERTY(qreal m44 READ m44 WRITE setM44 FINAL)
Q_OBJECT
public:
QQuickMatrix4x4ValueType(QObject *parent = 0);
@@ -288,18 +288,18 @@ class Q_AUTOTEST_EXPORT QQuickFontValueType : public QQmlValueTypeBase<QFont>
Q_ENUMS(FontWeight)
Q_ENUMS(Capitalization)
- Q_PROPERTY(QString family READ family WRITE setFamily)
- Q_PROPERTY(bool bold READ bold WRITE setBold)
- Q_PROPERTY(FontWeight weight READ weight WRITE setWeight)
- Q_PROPERTY(bool italic READ italic WRITE setItalic)
- Q_PROPERTY(bool underline READ underline WRITE setUnderline)
- Q_PROPERTY(bool overline READ overline WRITE setOverline)
- Q_PROPERTY(bool strikeout READ strikeout WRITE setStrikeout)
- Q_PROPERTY(qreal pointSize READ pointSize WRITE setPointSize)
- Q_PROPERTY(int pixelSize READ pixelSize WRITE setPixelSize)
- Q_PROPERTY(Capitalization capitalization READ capitalization WRITE setCapitalization)
- Q_PROPERTY(qreal letterSpacing READ letterSpacing WRITE setLetterSpacing)
- Q_PROPERTY(qreal wordSpacing READ wordSpacing WRITE setWordSpacing)
+ Q_PROPERTY(QString family READ family WRITE setFamily FINAL)
+ Q_PROPERTY(bool bold READ bold WRITE setBold FINAL)
+ Q_PROPERTY(FontWeight weight READ weight WRITE setWeight FINAL)
+ Q_PROPERTY(bool italic READ italic WRITE setItalic FINAL)
+ Q_PROPERTY(bool underline READ underline WRITE setUnderline FINAL)
+ Q_PROPERTY(bool overline READ overline WRITE setOverline FINAL)
+ Q_PROPERTY(bool strikeout READ strikeout WRITE setStrikeout FINAL)
+ Q_PROPERTY(qreal pointSize READ pointSize WRITE setPointSize FINAL)
+ Q_PROPERTY(int pixelSize READ pixelSize WRITE setPixelSize FINAL)
+ Q_PROPERTY(Capitalization capitalization READ capitalization WRITE setCapitalization FINAL)
+ Q_PROPERTY(qreal letterSpacing READ letterSpacing WRITE setLetterSpacing FINAL)
+ Q_PROPERTY(qreal wordSpacing READ wordSpacing WRITE setWordSpacing FINAL)
public:
enum FontWeight { Light = QFont::Light,