Widgets: use QStringRef to optimize memory allocation

Replace substring functions that return QString with
corresponding functions that return QStringRef where
it's possible.

Create QString from QStringRef only where necessary.

Change-Id: I728c4338135f83d9cdff4d1ee1aed77f95d453b8
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
This commit is contained in:
Anton Kudryavtsev 2016-05-13 12:20:39 +03:00
parent 17519feadd
commit b6cf041867
3 changed files with 6 additions and 6 deletions

View File

@ -1418,7 +1418,7 @@ QStyle::SubControl QAbstractSpinBoxPrivate::newHoverControl(const QPoint &pos)
QString QAbstractSpinBoxPrivate::stripped(const QString &t, int *pos) const QString QAbstractSpinBoxPrivate::stripped(const QString &t, int *pos) const
{ {
QString text = t; QStringRef text(&t);
if (specialValueText.size() == 0 || text != specialValueText) { if (specialValueText.size() == 0 || text != specialValueText) {
int from = 0; int from = 0;
int size = text.size(); int size = text.size();
@ -1440,7 +1440,7 @@ QString QAbstractSpinBoxPrivate::stripped(const QString &t, int *pos) const
text = text.trimmed(); text = text.trimmed();
if (pos) if (pos)
(*pos) -= (s - text.size()); (*pos) -= (s - text.size());
return text; return text.toString();
} }

View File

@ -1413,13 +1413,13 @@ static QString computeElidedText(Qt::TextElideMode mode, const QString &text)
QString ret; QString ret;
switch (mode) { switch (mode) {
case Qt::ElideRight: case Qt::ElideRight:
ret = text.left(2) + Ellipses; ret = text.leftRef(2) + Ellipses;
break; break;
case Qt::ElideMiddle: case Qt::ElideMiddle:
ret = text.left(1) + Ellipses + text.right(1); ret = text.leftRef(1) + Ellipses + text.rightRef(1);
break; break;
case Qt::ElideLeft: case Qt::ElideLeft:
ret = Ellipses + text.right(2); ret = Ellipses + text.rightRef(2);
break; break;
case Qt::ElideNone: case Qt::ElideNone:
ret = text; ret = text;

View File

@ -302,7 +302,7 @@ void QTextBrowserPrivate::setSource(const QUrl &url)
qWarning("QTextBrowser: No document for %s", url.toString().toLatin1().constData()); qWarning("QTextBrowser: No document for %s", url.toString().toLatin1().constData());
if (q->isVisible()) { if (q->isVisible()) {
QString firstTag = txt.left(txt.indexOf(QLatin1Char('>')) + 1); const QStringRef firstTag = txt.leftRef(txt.indexOf(QLatin1Char('>')) + 1);
if (firstTag.startsWith(QLatin1String("<qt")) && firstTag.contains(QLatin1String("type")) && firstTag.contains(QLatin1String("detail"))) { if (firstTag.startsWith(QLatin1String("<qt")) && firstTag.contains(QLatin1String("type")) && firstTag.contains(QLatin1String("detail"))) {
#ifndef QT_NO_CURSOR #ifndef QT_NO_CURSOR
QApplication::restoreOverrideCursor(); QApplication::restoreOverrideCursor();